从C ++派生类中的虚拟(重写)函数调用基类中实现的非虚拟成员函数时,获取“警告:未定义的引用”
试图将基类中的方法虚拟化,但问题并没有消失。
配置:编译器为GCC v7.8.0,C ++标准17
此外,检查了针对此类问题的众多解决方案,但没有人谈到这种情况
class Sometype
{
/* code */
};
template<typename T>
class Base
{
public:
T fetchStuff();
virtual T doSomething() = 0;
};
template<typename T>
T Base<T>::fetchStuff()
{
Sometype s;
return s;
}
class Derived : public Base<Sometype>
{
public:
Sometype doSomething() override {
Sometype a = fetchStuff();
return a;
}
};
int main()
{
Derived* d;
d->doSomething();
}
我希望“ fetchStuff()”返回“ Sometype”,但收到上述警告,构建失败。