2015-07-22 155 views
0

我有一个包含两个不同类对象作为成员的类。我想用另一个初始化一个成员,但到目前为止,我似乎无法得到这个工作。使用另一个类成员初始化类成员C++

例如,Game game(&input);包含必须有指定类型的错误。我该如何去做这件事?

class KApp { 
private: 
    Input input; 
    Game game(&input); 

}; 


class Input { 
    Input() {}; 
}; 

class Game { 
private: 
    Input* input; 
public: 
    Game(Input & inp) : input(&inp) {} 
    Game(Input* inp) : input(inp) {} 
}; 

回答

1

尝试这样的事情

class KApp { 
private: 
    Input input; 
    Game game; 
    KApp() : game(&input) {} 
}; 

这是怎么回事与Game game(&input);是,你声明一个成员game,编译器已经回升为函数声明,并抱怨说,没有按参数没有类型。

这样,你明确地在KApp的构造函数中调用Game::Game(Input*)(在这一点上,输入应该使用它的默认构造函数来初始化)。

编辑 - 输入* VS输入&

+0

知府。谢啦。我明白你在说什么。我正在努力尽快完成。我应该这样做,而不是在声明类对象时调用类对象构造函数。我做了调整,它的工作。 – Chemistpp