2

我正在尝试在我编写的类中包含一个成员变量,

我的类.h

#include <SomeClass.h>
Class MyClass{
    public:
        MyClass(int par);
        SomeClass B;
}

我的类.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];
}
4

2 回答 2

4

使用成员初始化器列表

MyClass::MyClass(int par) : B(par)
{
}
于 2013-01-18T10:36:05.137 回答
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();
}

请注意,您正在为指向每个对象的指针消耗额外的内存。

于 2013-01-19T01:30:21.363 回答