как инициализировать 2 члена в вложенных классах в C ++ - PullRequest
0 голосов
/ 05 ноября 2018

Привет, мой вопрос win32 выглядит следующим образом: Имеет 2 класса: класс A и вложенный класс B. У каждого класса есть член HWND. Я хочу инициализировать оба члена A и B HWND в конструкторе ДО вызова. Я имею в виду:

class A {
    HWND hwnd_main;
    B b;
public:
    A(HWND hwnd) : hwnd_main(hwnd), B(hwnd) {}
};

class B {
    HWND hwnd_main;
public:
    B(HWND hwnd)
    {
        hwnd_main = hwnd;
    }
};

То, что с этой схемой называется конструктор класса "B". Разве это не способ заполнить конструктор "B", не вызывая его специально? Thx.

1 Ответ

0 голосов
/ 05 ноября 2018

Здесь у вас есть не вложенный класс, а скорее класс агрегат . Здесь также не используется наследование (класс B не является прямой базой A), поэтому вы не можете вызвать конструктор class B непосредственно в конструкторе class A и инициализировать его переменные.

Вместо этого вы должны инициализировать переменную b, которая является членом class A, например:

A(HWND hwnd) : hwnd_main(hwnd), b(hwnd) {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...