"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;
//....
}
我在 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;
//....
}