gpt4 book ai didi

c++ - 构造函数中对默认构造函数的 undefined reference

转载 作者:行者123 更新时间:2023-11-28 00:01:35 25 4
gpt4 key购买 nike

<分区>

我正在使用 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

使用这样的默认构造函数:

#include "tool.h"

using namespace std;

Tool::Tool()
{
myMap = new map<string, MyObject*>();
// populate myMap
}

然后我想在另一个类的构造函数中使用该类:

#include "myclass.h"

using namespace std;

MyClass::MyClass()
{
Tool t;
}

但是我得到以下编译错误:

In function 'MyClass::MyClass()':
undefined reference to 'Tool::Tool()'

myclass.h自然包含了tool.h,所以不明白为什么找不到。我尝试使用指针,将 t 声明为成员变量,但我一直收到此错误。

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

感谢您的任何想法。

编辑:问题来自 Qt Creator 环境。我实际上在 Tool 之前创建了 MyClass,并且在没有清理项目的情况下编译失败但没有告诉我错误是什么;真正的错误是 myMap = new map<string, MyObject*>();在 Tool 类中,因此从未编译过 Tool(如 Jarod42 所述),因此出现 MyClass 的编译错误。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com