2015-01-21 28 views
2

我有一个typedef在一个类中的下列定义“没有指定类型”从一个类引用一个typedef时错误

/* 
*ReportData.h 
*/ 
class ReportData { 

public: 

    /** Classifiers information **/ 
    typedef struct{ 
     char *classifier; 
     uint8_t numCategories; 
     char **categories;  
     int *ranges;   
    } Classification; 
}; 

此代码后作为参考如下

/* 
* DynamicCarDetection.cpp 
*/ 

    #include <DataReport.h> 

    int numOfClassGroups = 1; 
    int numOfCategories = 2; 
    ReportData::Classification *vehiclesClassificators; 

    vehiclesClassificators = new ReportData::Classification[numOfClassGroups]; 

    vehiclesClassificators[i].numCategories = NumOfcategories; 
    vehiclesClassificators[i].categories = new char *[numOfcategories]; 

当我尝试用这个命令来编译

g++ -c DynamicCarDetection.cpp -I ./ 

我得到这个错误每个参考vehiclesClassificators

DynamicCarDetection.cpp:12:1: error: ‘vehiclesClassificators’ does not name a type

看起来像名称范围的明显错误,但我一直在努力了解问题是什么,因为显然,typedef ReportData :: Classification正在被识别。

提前

+0

哪一行是12行? – ecatmur 2015-01-21 10:43:54

+1

“DynamicCarDetection.cpp”中的某些函数中的所有语句?此外,为什么当代码是C++时使用gcc? – iammilind 2015-01-21 10:43:58

+0

为什么在C++中使用'typedef struct'? – bolov 2015-01-21 10:44:25

回答

4

在C++非常感谢,句子(除了一些极端情况)必须是一个函数体的一部分。而在你的CPP文件中没有,所以编译器会对你正在做的事感到困惑。

#include <DataReport.h> 

void DoThings() 
{ 
    int numOfClassGroups = 1; 
    //.... 
} 
+0

尴尬显而易见!菜鸟。不是一个借口,但它来自于使测试试图获得一个结构数组的静态初始化工作,因此为什么代码在定义部分结束。 – pablochacin 2015-01-21 11:13:00