C++ 构造函数中对默认构造函数的未定义引用

C++ 构造函数中对默认构造函数的未定义引用,c++,constructor,qt-creator,default-constructor,C++,Constructor,Qt Creator,Default Constructor,我正在使用Qt Creator进行一个项目 假设我有一个简单的工具类: #ifndef TOOL_H #define TOOL_H #include <map> #include <string> #include "myobject.h" class Tool { public: Tool(); private: const std::map<std::string, MyObject*> myMap; }; #endif // TO

我正在使用Qt Creator进行一个项目

假设我有一个简单的工具类:

#ifndef TOOL_H
#define TOOL_H

#include <map>
#include <string>
#include "myobject.h"

class Tool
{
public:
    Tool();

private:
    const std::map<std::string, MyObject*> myMap;
};

#endif // TOOL_H
但我得到以下编译错误:

In function 'MyClass::MyClass()':
undefined reference to 'Tool::Tool()'
当然,myclass.h包含tool.h,所以我不明白为什么它找不到它。我尝试使用一个指针,将t声明为成员变量,但一直出现这个错误

我尝试使用这些类在我的外部创建一个最小的项目,并使用g++(工具,然后是带有主函数的MyClass)编译它;成功了。 所以,可能是Qt Creator如何处理编译和链接的问题?但我不知道该检查哪个选项

谢谢你的建议

编辑:问题来自Qt Creator环境。实际上,我在工具之前创建了MyClass,没有清理项目,编译失败了,没有告诉我错误是什么;真正的错误是
myMap=newmap()在工具类中,因此工具从未被编译(正如Jarod42所提到的),因此MyClass的编译错误


清理和重建指出了真正的错误,并允许我修复我的项目。

未定义对“Tool::Tool()”的引用。
是链接器错误消息

这意味着您的cpp文件已成功编译,但在创建二进制文件时,链接器无法找到
Tool::Tool()


这很可能是生成系统中的项目设置问题。

对“Tool::Tool()”的未定义引用是链接器错误消息

这意味着您的cpp文件已成功编译,但在创建二进制文件时,链接器无法找到
Tool::Tool()


这很可能是生成系统中的项目设置问题。

myMap=newmap()无效,顺便说一句,您忘记了编译工具。您是对的,那一行无效,并且在编译过程中弄乱了,这没有通知我。
myMap=newmap()是无效的,顺便说一句,你忘记了编译工具。你是对的,那一行是无效的,并且在编译过程中弄乱了,它没有通知我。这确实是一个项目问题:必须先清理它,才能向我显示上面注释中提到的错误(在工具类中)。编辑的问题。这确实是一个项目问题:必须先清理它,才能向我显示上面评论中提到的错误(在工具类中)。编辑的问题。
#include "myclass.h"

using namespace std;

MyClass::MyClass()
{
    Tool t;
}
In function 'MyClass::MyClass()':
undefined reference to 'Tool::Tool()'