默认构造函数上的C ++ Pass Point

时间:2014-01-10 19:55:28

标签: c++

Hy家伙,如果我有这两个班级:

class game{

int num;
string name;
Equip e;

public:
game(string n = "Default",int i = 2,Equip &tmp = NULL):name(n),num(i),e(tmp){};
.
.
//Sets and Gets
.
};

class Equip{
    int x;
public:
    //contructor of Equip
    .
    .
    //Sets and Gets
    .
};

如果我在主码上有:

int main(){
Equip A();
Game g("Zuup",2,*A);

.
.
.

}

我如何将这样的一个点传递给其他类? PS。这段代码就是一个例子。

有人可以帮帮我吗?

最佳。

2 个答案:

答案 0 :(得分:1)

很多错误(其中一些错误):

这样:

game(string n = "Default",int i = 2,Equip &tmp = NULL)

应该是:

game(string n = "Default",int i = 2,Equip *tmp = NULL)

也:

Equip A();

会给你“最令人烦恼的解析”问题

Game g("Zuup",2,*A);

应该是:

Game g("Zuup",2,&A);

但最后你将一个Equip对象实例指针传递给你的游戏,不是你想要的吗?

答案 1 :(得分:0)

我似乎理解了你的问题。正如您所说的代码只是一个例子,我不会讨论它的缺陷。

所以主要看起来如下

int main()
{
   Equip e;
   Game g( "Zuup",2, &e);

或者

int main()
{
   Equip *e = new Equip();
   Game g( "Zuup",2, e);

这取决于你的类的定义方式。

甚至你可以再定义一个构造函数

game( Equip *e  ) : game( "Defailt", 2, e ){};