"does not name a type" 从 class 引用 typedef 时出错

"does not name a type" error when referencing a typedef from a class

我在 class

中有以下 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 正在被识别。

非常感谢

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

#include <DataReport.h>

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