我正在尝试在我写的类中包含一个成员变量,
MyClass.h
#include <SomeClass.h>
Class MyClass{
public:
MyClass(int par);
SomeClass B;
}
MyClass.cpp
#include "MyClass.h"
#include "SomeClass.h"
MyClass::MyClass(int par){
B=SomeClass(par);
}
但SomeClass
为其构造函数提取变量,因此上面的代码会产生no matching function for call to "SomeClass::SomeClass()"
我该怎么办?
更新
看起来像成员初始化列表是要走的路,但是如果我想使用SomeClass
个对象的数组呢?所以MyClass.h成为:
#include <SomeClass.h>
Class MyClass{
public:
MyClass(int par);
SomeClass B[2];
}
答案 0 :(得分:4)
使用成员初始化列表
MyClass::MyClass(int par) : B(par)
{
}
答案 1 :(得分:1)
你无法得到你想要的东西,但你可以得到你需要的东西。要提供对该对象集的数组访问,请创建一个指针数组
Class MyClass {
public:
MyClass(int par);
SomeClass B0;
SomeClass B1
SomeClass* B[2];
然后初始化构造函数中的指针:
MyClass::MyClass(int par) :
B0(123), B1(456)
{
B[0] = &B0;
B[1] = &B1;
}
对于少数对象而言,这显然是单调乏味的,但对于您可能在微控制器上执行的任何操作都很好。 现在你有了一个可以根据需要使用的对象指针数组:
for(i=0; i<2; i++) {
B[i]->foo();
}
请注意,为每个对象指针消耗额外的内存。