带有类指针的c++ map在编译时给出错误
C++ map with class pointer gives error while compiling
我有一个带有字符串和类指针的映射。我来自JAVA,所以请指导我。
class Client {
public:
static map<string, Client*> CLIENTS;
Client(string dir);
static Client* get_client(string name);
virtual ~Client();
};
我的get_client方法是
Client* Client::get_client(string name) {
map<string, Client*>::iterator it = CLIENTS.find(name);
}
给出
下面的错误Undefined symbols for architecture x86_64:
"Client::CLIENTS", referenced from:
Client::get_client(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in client.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
您需要定义您刚刚声明的CLIENTS
。在class Client{
之外,在clients.cpp
文件中添加
std::map<std::string, Client*> Client::CLIENTS;
顺便说一句,我发现CLIENTS
这个名字很令人困惑。也许应该改成client_dict
不要忘记编译调试信息和所有警告,例如在Linux上使用g++ -Wall -g
。改进你的代码,直到没有警告(你的get_client
会得到一些)。并学习如何使用调试器(例如Linux上的gdb
)。
添加
map<string, Client*> Client::CLIENTS;
到cpp
文件。不要在STL类之前省略std::
前缀。尤其是在header
相关文章:
- 在Linux for Windows上编译C++代码时出错
- 为x86而非x64编译时出错
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- 尝试在Windows上执行C++时出错(通过MinGW编译)
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- constexpr 使用 clang 编译 TensorFlow 时出错
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- 编译包含指向模板函数的指针的初始值设定项列表时,gcc 出错,但 clang 不出错
- 编译时出错 - 从 DWORD 到 LPCVOID 的转换
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 编译时出错 - 链接.cpp和头文件
- <limits> 使用 VSC2019 编译旧代码时出错
- 在 ubuntu 焦点上编译虚幻引擎 4.25 时出错
- 编译包含LLVM API标头的C++文件时出错
- 编译以下代码时出错
- 使用交叉工具ng编译gcc时出错
- 在 dll 中为 qLibrary 编译 qobject 时出错
- QML/C++编译出错
- Proc*C编译出错
- 应用程序在编译出错后执行时关闭,但在调试时运行良好