如何解决 non-virtual member function marked 'override' hides virtual member function
时间: 2024-09-27 10:16:02 浏览: 21
在C++中,遇到 "non-virtual member function marked 'override' hides virtual member function" 这种错误,意味着你试图在一个非虚函数上标记 `override` 关键字,但这覆盖了一个基类中的虚拟函数。这是因为只有声明为 `virtual` 的成员函数才能被子类覆盖为 `override`。
以下是解决这种情况的步骤:
1. 检查函数声明:确认该函数是不是应该被声明为 `virtual`。如果是覆盖基类的虚拟函数,则应在其声明中添加 `virtual` 关键字。
```cpp
class Base {
public:
virtual void someFunction() override; // 基类中的虚函数
};
class Derived : public Base {
public:
// 如果你想让这个函数覆盖Base的someFunction,应该这样做
void someFunction() override; // 声明为virtual,并保留override关键字
};
```
2. 检查继承层次结构:确保继承自正确的基类,并且你希望覆盖的函数确实是在那个基类中声明为虚拟的。
3. 确保意图正确:如果不是真的想要覆盖,可以删除 `override` 关键字,保留原样的非虚函数。
相关问题
上面的题override提示error: only virtual member functions can be marked 'override'
这个错误通常是因为你在一个非虚函数上使用了`override`关键字。在C++11中,你可以使用`override`关键字来确保你正在重写一个虚函数,这样可以帮助你在编译时捕获错误。但是,如果你在非虚函数上使用`override`,编译器会发出“只有虚成员函数才能标记为'override'”的错误。
因此,请确保你在重写虚函数时使用`override`关键字,而不是在非虚函数上使用它。
JAR will be empty - no content was marked for inclusion! 如何解决
这个问题可能是由于 JAR 文件中没有包含任何内容导致的。您可以检查您的构建文件和源代码,确保您已经正确地指定了要包含在 JAR 文件中的内容。您还可以尝试重新构建您的项目,并确保您的构建工具已正确配置。如果问题仍然存在,请尝试在构建过程中启用更详细的日志记录,以便更好地了解问题的根本原因。