成员变量需要构造函数的参数

时间:2013-01-18 10:35:24

标签: c++ class arduino

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

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];
}

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();
}

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