在另一个类中使用成员初始化程序声明类的实例

时间:2015-03-30 17:08:31

标签: c++ class oop c++11

所以我有一个类,其构造包含成员初始化器,如下所示:

class aClass
{

public:

//Functions
aClass(int sVal1, float sVal2, float sVal3,float sVal4);        //Constructor
~aClass();                                                       //Destructor

private:

int someValue;
float sSomeValue;
float tSomeValue;
float fSomeValue;
};

在类的.cpp文件中看起来像这样的构造函数:

NPC::NPC(int sVal1, float sVal2, float sVal3, float sVal4)
:someValue(sVal1), sSomeValue(sVal2), tSomeValue(sVal3), fSomeVlaue(sVal4)
{

}

我的问题是:如果我要在另一个类头文件中将此类的实例声明为私有变量,那么声明的语法是什么?

1 个答案:

答案 0 :(得分:1)

在另一个班级'标题你有类似的东西:

class anotherClass {
public: 
    anotherClass(); 
    anotherClass(int sVal1, float sVal4);
    ...
private: 
    aClass mya; 
}; 

当然,当您使用aClass时,您还需要包含第一个类的标题。

在你的cpp中你会初始化这样的事情:

anotherClass::anotherClass()
     : mya(0,0,0,0) {}  // as aClass has no default constructor, 
                        // you must always make sure the init list provides for mya 
anotherClass::anotherClass(int sVal1, float sVal4) 
     : mya(sVal1, 0, 0, sVal4) {} 

备注:由于aClass没有默认构造函数,因此必须确保在anotherClass初始化列表中对其进行初始化。