我正在尝试编写一个基于接口的文件加载器,对于不同的文件类型,可以通过多种方式实现。我尝试过我想到的所有组合或在堆栈/互联网上找到的所有组合,但我不断收到错误消息。我究竟做错了什么?
核心/loader.h:
#ifndef CORE_LOADER_H
#define CORE_LOADER_H
class LoaderInterface
{
public:
virtual bool reloadFile();
};
#endif // CORE_LOADER_H
core / 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;
}
链接器说:
(..)/qt/build-Foo-Desktop_Qt_5_7_0_GCC_64bit-Debug/own.o:-1: error: undefined reference to `typeinfo for LoaderInterface'
最佳答案
您应该在接口类中使用纯虚函数:
class LoaderInterface
{
public:
virtual bool reloadFile() = 0;
};