从类引用 typedef 时出现“未命名类型”错误

问题描述 投票:0回答:2

我在类中有以下 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 ./

我在每次引用车辆分类器时都会遇到此错误

DynamicCarDetection.cpp:12:1:错误:“vehiclesClassificators”不 命名一个类型

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

提前非常感谢

c++ compiler-errors typedef
2个回答
4
投票

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

#include <DataReport.h>

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

0
投票

即使我发现答案也太晚了。

我英文不好,express也不好,谢谢。我发现一件事可能会导致这个问题。

您在项目中是否发现了任何旧的错误文件?当我在 vscode 中使用 g++ 编译项目时,我在项目中看到一个名为 tempCodeRunnerFile.cpp 的错误提示文件。但我在 settings.jsion 文件中设置了一些隐式选择,这会导致文件消失。通过删除 settings.json 文件,我看到了导致问题的隐式错误提示文件。

© www.soinside.com 2019 - 2024. All rights reserved.