C++ C++;带有类指针的映射在编译时出错

C++ C++;带有类指针的映射在编译时出错,c++,C++,我有一个带有字符串和类指针的映射。 我来自爪哇,请指导我 class Client { public: static map<string, Client*> CLIENTS; Client(string dir); static Client* get_client(string name); virtual ~Client(); }; 类客户端{ 公众: 静态地图客户端; 客户端(字符串目录); 静态客户端*get_客户端(字符串名称); 虚拟

我有一个带有字符串和类指针的映射。 我来自爪哇,请指导我

class Client {

public:
    static map<string, Client*> CLIENTS;
    Client(string dir);
    static Client* get_client(string name);
    virtual ~Client();
};
类客户端{
公众:
静态地图客户端;
客户端(字符串目录);
静态客户端*get_客户端(字符串名称);
虚拟客户机();
};
我的get_客户端方法是

Client* Client::get_client(string name) {
       map<string, Client*>::iterator it = CLIENTS.find(name);
}
Client*Client::get_Client(字符串名称){
map::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
架构x86_64的未定义符号: “客户端::客户端”,引用自: Client::get_Client(std::basic_string)在Client.o中 ld:找不到架构x86_64的符号 collect2:ld返回了1个退出状态
您需要定义仅声明的
客户端。因此,在
类客户端{
之外,在
clients.cpp
文件中添加

 std::map<std::string, Client*> Client::CLIENTS;
std::map Client::CLIENTS;
顺便说一句,我发现客户的名字很混乱。也许应该是客户的名字

不要忘记使用调试信息和所有警告进行编译,例如在Linux上使用
g++-Wall-g
。改进您的代码,直到没有警告出现(您的
get\u客户端将获得一些警告)。并学习如何使用调试器(例如在Linux上使用
gdb

map<string, Client*> Client::CLIENTS;
map客户端::客户端;
cpp
文件。
不要在STL类之前省略
std::
前缀。尤其是在标题中,如果您的
get\u客户机的主体与您发布的完全相同,那么它是senseless@borisbn我在查找问题时删除了很多代码。我添加了std::map客户端;在cpp文件中,我仍然得到了相同的问题,应该是
client::客户