首页 > 解决方案 > 如何在 C++ 的嵌套类中初始化 2 个成员

问题描述

嗨,我的 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”的构造函数的方法吗?谢谢。

标签: c++classconstructornested

解决方案


您在这里拥有的不是嵌套类,而是更像一个聚合类。这里也没有涉及到继承(类B不是 的直接基类A),所以不能class B直接在的构造函数中调用构造函数class A并初始化其变量。

相反,您必须初始化变量b,它是这样的成员class A

A(HWND hwnd) : hwnd_main(hwnd), b(hwnd) {}

推荐阅读