"没有命名类型"从类引用typedef时出错

时间:2015-01-21 10:40:45

标签: c++ compiler-errors 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:错误:'vehiclesClassificators'没有   命名一个类型

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

非常感谢提前

1 个答案:

答案 0 :(得分:4)

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

#include <DataReport.h>

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