作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在一个类中有如下定义的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 文件中没有任何内容,因此编译器会对您在做什么感到困惑。
#include <DataReport.h>
void DoThings()
{
int numOfClassGroups = 1;
//....
}
关于c++ - 从类中引用 typedef 时出现 "does not name a type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065104/
我是一名优秀的程序员,十分优秀!