具有包含另一个 class 的对象的数组的子 class 的构造函数

Constructor of a children class that have an array that contains objects of another class

Dialog.h

#include "WBasic.h"
#include "WButton.h"
#include "WData.h"

#ifndef WDIALOG_H_INCLUDED
#define WDIALOG_H_INCLUDED


class WDialog : public WBasic
{

    private:
    WButton wB;
    WData wD;


    public:
    //Constructor
    WDialog(const int& e = 0, const WButton& = WButton(0,0), const WData& = WData(0,0,0));

    ~WDialog();

};


#endif // WDIALOG_H_INCLUDED

Dialog.cpp

#include <iostream>
#include "WDialog.h"


WDialog::WDialog(const int& e, const WButton& WBUTTON, const WData& WDATA) :
WBasic(e), wB(WBUTTON), wD(WDATA)
{
}

上面的代码工作得很好,但是我正在尝试使 "WButton wB" 成为一个向量,将其更改为 "WButton wB[3];"

class WDialog : public WBasic
{

    private:
    WButton wB[3];
    WData wD;

};

但是我不知道如何处理构造函数。

你可以用vector来解决这个问题。 我在下面写了一个小例子。

#include <iostream>
#include <vector>
using namespace std;

    class A{

    };
    class B{
        public:
            B():vec (4,A())
            {
            }
        private :
            vector<A> vec;
    };
    int main() {
        // your code goes here
        B obj();

        return 0;
    }

你可以观察我是如何用三个 class 对象初始化向量 vec 的。

我认为如果可以(你的编译器支持 C++11),我更喜欢 std::array

#include <array>

std::array<WButton, 3> wB;

然后在您的构造函数中使用初始化列表:

WBasic(e),
wB{WButton(...), WButton(...), WButton(...)},
wD(WDATA)