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

VS compiling error when passing arguments to c++ constructor

本文关键字:VS 编译 错误 参数传递 c++ 构造函数      更新时间:2023-10-16

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

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"的构造函数。

谢谢!

默认成员初始值设定项仅适用于大括号或等于初始值设定项。

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

或者,您可以使用成员初始值设定项列表。

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