为什么不编译?
File.hpp
class CTest
{
public:
enum enumTest { EN_TEST };
//constructor:
CTest(enumTest f_en);
};
AnotherFile.hpp
#include "File.hpp"
class CAnotherTest
{
public:
CTest obj_Test(CTest::EN_TEST);
};
Visual Studio说:错误C2061:语法错误:标识符'EN_TEST'
armcc编译器说:错误:#757:常量“CTest::EN_TEST”不是类型名称
谢谢,Mirco
最佳答案
因为,
CTest obj_Test(CTest::EN_TEST);
被评估为名为
obj_Test
的函数。现在它应该将参数作为类型,但是CTest::EN_TEST
是一个值,而不是类型。如果打算用
obj_Test
一个对象,则可以在构造函数中将CTest::EN_TEST
传递给它:class CAnotherTest
{
public:
CAnotherTest () : obj_Test(CTest::EN_TEST) {}
};
关于c++ - 成员对象构造函数和枚举,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6692280/