【发布时间】:2016-06-20 07:38:57
【问题描述】:
我在覆盖使用模板参数包扩展指定的基类的虚拟方法时遇到问题 - 而覆盖方法将显示实际的相关类型。这是一个 MCVE:
#include <iostream>
template <typename... Ts>
class A { virtual void foo(Ts&&...); };
class B : public A<int, unsigned> {
void foo(int x, unsigned y) override { std::cout << "here"; }
};
int main() {
B b;
}
编译这个(标准设置为 C++11 或 C++14),我得到:
a.cpp:9:7: error: ‘void B::foo(int, unsigned int)’ marked override, but does not override void foo(int x, unsigned y) override { ^
【问题讨论】:
-
仔细查看基类函数的签名。
标签: c++ c++11 variadic-templates virtual-functions variadic-functions