错误:在C ++中实现接口模式时对typeinfo的未定义引用

时间:2017-01-09 19:49:07

标签: c++ qt design-patterns namespaces

我正在尝试编写一个基于接口的文件加载器,它将以多种方式实现,用于不同的文件类型。我尝试了我想到的每一个组合,或者在堆栈/互联网上找到但我一直收到错误。我做错了什么?

芯/ loader.h:

#ifndef CORE_LOADER_H
#define CORE_LOADER_H

class LoaderInterface
{
    public:
        virtual bool reloadFile();
};

#endif // CORE_LOADER_H

芯/ lodaer / own.h:

#ifndef CORE_LOADER_OWN_H
#define CORE_LOADER_OWN_H

#include "src/core/loader.h"

class Own : public LoaderInterface
{
    public:
        bool reloadFile();
};

#endif // CORE_LOADER_OWN_H

芯/装载器/ own.cpp:

#include "src/core/loader/own.h"

bool Own::reloadFile(){
    return true;
}

Linker说:

(..)/qt/build-Foo-Desktop_Qt_5_7_0_GCC_64bit-Debug/own.o:-1: error: undefined reference to `typeinfo for LoaderInterface'

1 个答案:

答案 0 :(得分:1)

你应该在接口类中使用纯虚函数

class LoaderInterface
{
    public:
        virtual bool reloadFile() = 0;
};