在编写子类的构造函数时遇到了一些障碍..
在我的程序中,我有一个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
文件的{}中编写实现,但这当然不是我想要遵循的实践。
执行此操作的正确语法是什么?我可以从挖掘中找到的唯一示例在同一组代码中编写定义和实现:/
答案 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
}