具有包含另一个 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)
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)