Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:在C+中实现接口模式时未定义对typeinfo的引用+;_C++_Qt_Design Patterns_Namespaces - Fatal编程技术网

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

C++ 错误:在C+中实现接口模式时未定义对typeinfo的引用+;,c++,qt,design-patterns,namespaces,C++,Qt,Design Patterns,Namespaces,我正在尝试编写一个基于接口的文件加载器,它将以多种方式为不同的文件类型实现。我尝试了我脑海中出现的或在stack/互联网上找到的每一种组合,但我不断地得到错误。我做错了什么 堆芯/装载机。h: #ifndef CORE_LOADER_H #define CORE_LOADER_H class LoaderInterface { public: virtual bool reloadFile(); }; #endif // CORE_LOADER_H 岩芯/洛达尔/奥

我正在尝试编写一个基于接口的文件加载器,它将以多种方式为不同的文件类型实现。我尝试了我脑海中出现的或在stack/互联网上找到的每一种组合,但我不断地得到错误。我做错了什么

堆芯/装载机。h:

#ifndef CORE_LOADER_H
#define CORE_LOADER_H

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

#endif // CORE_LOADER_H
岩芯/洛达尔/奥wn.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
core/loader/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;
};

它与名称空间无关。或Qt。删除这两个选项,您仍然会得到相同的错误。@juanchopanza可以随意建议一个更合适的标题。那么“错误:不完整类型的无效使用”如何?这将使谷歌变得容易。你说得对,谢谢you@BoPersson为什么?问题是主题中的错误,上面的代码足以将该错误重现给否决该答案的人,请解释您为什么这样做。在我看来,这是一个解决我问题的办法。不过,如果也能解释一下,那就太好了。@Luke如果您没有包含
=0
,也没有包含
LoaderInterface::reloadFile
的定义,那么错误消息就不会出现在您的问题中。嗯,它并没有真正告诉我为什么会发生这种情况,但我会在互联网上寻找完整的解释。谢谢大家的帮助