如何解决“警告:对<DerivedClass> :: <aNonVirtualMemberFunctionImplementedInBaseClass()>的未定义引用”

时间:2019-09-22 13:43:01

标签: c++ polymorphism c++17 virtual-functions

从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”,但收到上述警告,构建失败。

0 个答案:

没有答案