上面的题override提示error: only virtual member functions can be marked 'override'
时间: 2023-12-10 20:05:02 浏览: 411
这个错误通常是因为你在一个非虚函数上使用了`override`关键字。在C++11中,你可以使用`override`关键字来确保你正在重写一个虚函数,这样可以帮助你在编译时捕获错误。但是,如果你在非虚函数上使用`override`,编译器会发出“只有虚成员函数才能标记为'override'”的错误。
因此,请确保你在重写虚函数时使用`override`关键字,而不是在非虚函数上使用它。
相关问题
error C3646: “CV_OVERRIDE”: 未知重写说明符怎么解决
这个错误通常是因为编译器版本过低导致的。CV_OVERRIDE 是 C++11 新增的一个重写说明符,用于显式地声明一个函数是覆盖了基类的虚函数。
解决方法:
1.使用支持 C++11 的编译器进行编译。
2.如果无法升级编译器,可以将 CV_OVERRIDE 替换为 override 关键字,这是 C++11 前的重写说明符。
示例:
```
class Base {
public:
virtual void foo() {}
};
class Derived : public Base {
public:
#if defined(_MSC_VER) && (_MSC_VER < 1600)
virtual void foo() /*override*/ {} // for Visual Studio 2008 and earlier
#else
virtual void foo() override {} // for C++11 compilers and Visual Studio 2010 and later
#endif
};
```
以上代码中使用了条件编译来根据编译器版本选择使用 override 关键字或 CV_OVERRIDE。
AttributeError: 'AvgPool2d' object has no attribute 'divisor_override'
这个错误是由于PyTorch版本更新导致的,旧版本中的AvgPool2d层有一个divisor_override参数,但是在新版本中已经被移除了。如果你的代码中使用了这个参数,需要将其替换为count_include_pad参数。如果你使用的是旧版本的PyTorch,可以尝试升级到新版本来解决这个问题。如果你已经使用了新版本的PyTorch,那么你需要修改代码以适应新版本的API。