Ошибка компиляции VS при передаче аргументов в конструктор c ++ - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь передать конструктору два аргумента:

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 голосов
/ 09 мая 2018

Инициализатор члена по умолчанию работает только с инициализатором скобок или равно. например,

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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...