Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为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(overridefinal)。您只需将该说明符放在类定义内的函数声明上即可。例如explicitstaticvirtual,...也是如此

header 中的位置正确。在您的源代码中,只需将其删除即可。

关于c++ - 在类定义之外不允许覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52627553/

10-10 23:12