Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
2年前关闭。
Improve this question
我创建了一个抽象类和一个具体的子类:
当我用g++编译
您不能在类定义之外放置virt-specifier(
header 中的位置正确。在您的源代码中,只需将其删除即可。
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
2年前关闭。
Improve this question
我创建了一个抽象类和一个具体的子类:
//bca.h
#include <string>
class bca {
public:
virtual std::string get_virtual_year() const = 0;
};
//bca_interface.h
#include "bca.h"
class bca_interface : public bca {
public:
std::string get_virtual_year() const override;
};
//bca_interface.cpp
#include "bca_interface.h"
std::string bca::get_virtual_year() const override {
return "";
}
当我用g++编译
bca_interface.cpp
时,我得到: error: virt-specifiers in ‘get_virtual_year’ not allowed outside a class definition
std::string bca::get_virtual_year() const override {
最佳答案
该错误说明了一切:
error: virt-specifiers in ‘get_virtual_year’ not allowed outside a class definition
您不能在类定义之外放置virt-specifier(
override
和final
)。您只需将该说明符放在类定义内的函数声明上即可。例如explicit
,static
,virtual
,...也是如此header 中的位置正确。在您的源代码中,只需将其删除即可。
关于c++ - 在类定义之外不允许覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52627553/
10-10 23:12