编写子类构造函数的实现

时间:2013-12-15 00:50:25

标签: c++ inheritance constructor

在编写子类的构造函数时遇到了一些障碍..

在我的程序中,我有一个entity类,它描述了游戏中的通用对象。它包含所有内容的成员,例如位置,精灵图像,对象名称等。

有一个名为creature的子类,它继承自entity,描述游戏中的任何生物/物体,玩家,怪物,你有什么。

entity.h有构造函数:

entity(int a, int b, int c, string n, char d),明确地在(a,b,c)创建一个名为n且显示字符为d的实体。

creature继承entity和前面提到的构造函数。虽然它还有其他一些需要初始化的东西,即生物的统计数据需要自己的代码块来描述。

。:。,creature.h有构造函数:

creature(int a, int b, int c, string n, char d) : entity(a,b,c,n,d) { }

但是,当我去编写creature.cpp并编写此构造函数的实现来初始化统计信息时,我无法通过“重定义”/“先前定义的”错误。我的第一个猜测是删除末尾的括号,然后我得到"expected { at end of input"。我找到的唯一临时解决方案是在creature.h文件的{}中编写实现,但这当然不是我想要遵循的实践。

执行此操作的正确语法是什么?我可以从挖掘中找到的唯一示例在同一组代码中编写定义和实现:/

1 个答案:

答案 0 :(得分:1)

creature的类声明中,只需输入:

creature(int a, int b, int c, string n, char d);

然后在你的creature.cpp中填写完整内容:

creature::creature(int a, int b, int c, string n, char d) : entity(a,b,c,n,d) 
{ 
    // body of the constructor
}