VS将参数传递给c ++构造函数时编译错误

时间:2018-05-09 15:26:53

标签: c++ constructor

我正在尝试将两个参数传递给构造函数:

class CTest1
{
public:
    CTest1(const int i8BitImageID, const int i256BitImageID) : m_i8BitImageID(i8BitImageID), m_i256BitImageID(i256BitImageID) {};
private:
    int m_i8BitImageID;
    int m_i256BitImageID;
};

#define BITMAP_1_ID 1
#define BITMAP_2_ID 2

class CTest2
{
public:
    CTest1 test1(BITMAP_1_ID, BITMAP_2_ID); // Compile error here
};

当我编译它时(使用Visual Studio 2017),我声明“test1”的行导致“C2059:语法错误:'常量'”错误。我在构造函数的定义中试过没有“const”。

谢谢!

1 个答案:

答案 0 :(得分:4)

Default member initializer仅适用于大括号或等于初始化程序。 e.g。

class CTest2
{
public:
    CTest1 test1 = CTest1(BITMAP_1_ID, BITMAP_2_ID);
    CTest1 test2 {BITMAP_1_ID, BITMAP_2_ID};
};

或者您可以使用member initializer list

class CTest2
{
public:
    CTest2() : test1(BITMAP_1_ID, BITMAP_2_ID) {}
    CTest1 test1;
};