在头文件中,我声明了2个公共成员文件为纯虚函数,如下所示
头文件
class Whatever
{
public:
virtual bool Update() = 0;
virtual bool ShouldBeVisible() = 0;
};
执行情况
bool Whatever::Update();
bool Whatever::ShouldBeVisible();
但是当我试图编译时,我保留了一个错误,它说:成员的行外声明必须是 Update 和 ShouldBeVisible 的定义。当我去掉实现中的分号时,我得到一个不同的错误,显示expected ';顶级声明符之后的“”和成员的行外声明必须是 Update 的定义,ShouldBeVisible 的函数声明符之后应为函数体。
2条答案
按热度按时间yc0p9oo01#
第二个文本块只是更多的声明:
要有定义,就必须有某种实现:
编辑:
我知道你想让它们成为纯虚函数,也就是说没有定义。纯虚函数就像是要求另一个类承诺实现/定义这些函数。你应该使用
= 0
,除非在另一个类中,否则不要再定义它们。然后你就可以编写实现whatever接口的类了,以后你就可以使用你的
Whatever
,而不需要特别知道你有什么类型的whatever。使用示例:
wj8zmpe12#
编译器希望头文件中有一个函数声明-
class Class {void function ();}
,并且此函数的定义是编译器希望cpp文件中的void Class::function () { int x=2; }
。