具有包含另一个类的对象的数组的子类的构造方法

时间:2015-05-22 06:21:28

标签: c++ arrays inheritance constructor composition

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;

};

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

2 个答案:

答案 0 :(得分:0)

您可以使用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;
    }

您可以观察我如何使用三个A类对象初始化矢量vec。

答案 1 :(得分:0)

在我看来,如果可以(您的编译器支持C ++ 11)更喜欢std :: array

#include <array>

std::array<WButton, 3> wB;

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

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