为什么不编译?

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/

10-11 18:42