C++ 未解析的外部符号(单例类C+;+;)

C++ 未解析的外部符号(单例类C+;+;),c++,singleton,C++,Singleton,我已经在Stackoverflow中找到了这类问题的一些答案,但没有一个对我有帮助。问题描述了如何解决这个错误,我应该提供一个定义,而不仅仅是一个声明。我已经这样做了,但仍然会出现以下错误: 错误13错误LNK2019:未解析的外部符号“private:\u thiscall NetworkManager::NetworkManager(void)”(??0 NetworkManager@@AAE@XZ)在函数“public:static class NetworkManager*u cdecl

我已经在Stackoverflow中找到了这类问题的一些答案,但没有一个对我有帮助。问题描述了如何解决这个错误,我应该提供一个定义,而不仅仅是一个声明。我已经这样做了,但仍然会出现以下错误:

错误13错误LNK2019:未解析的外部符号“private:\u thiscall NetworkManager::NetworkManager(void)”(??0 NetworkManager@@AAE@XZ)在函数“public:static class NetworkManager*u cdecl NetworkManager::Instance(void)”中引用(?Instance@NetworkManager@@SAPAV1@XZ)C:\Users\HIDDEN\Documents\AGK Projects\C++Libraries\apps\template\U windows\U vs2013\NetworkManager.obj template

代码如下:

NetworkManager.h

#ifndef _H_NETWORKMANAGER_
#define _H_NETWORKMANAGER_

#include<iostream>
#include<vector>

class NetworkManager
{
private:
    NetworkManager();
    static NetworkManager * netManager;
public:
    int networkID;
    static NetworkManager * Instance();
    int HostNetwork(std::string netName, std::string hostName, int port);
    int JoinNetwork(std::string netName, std::string clientName);
    bool IsNetworkActive(int netID);
};

#endif
\ifndef\u网络管理器_
#定义网络管理器_
#包括
#包括
类网络管理器
{
私人:
NetworkManager();
静态网络管理器*netManager;
公众:
int networkID;
静态NetworkManager*实例();
int HostNetwork(std::string netName,std::string hostName,int port);
int JoinNetwork(std::string netName,std::string clientName);
bool是网络活动的(intnetid);
};
#恩迪夫
NetworkManager.cpp

#include<iostream>
#include "NetworkManager.h"
#include "template.h"

NetworkManager * NetworkManager::netManager = NULL;

NetworkManager * NetworkManager::Instance()
{
    if (!netManager)
        netManager = new NetworkManager;

    return netManager;
}

int NetworkManager::HostNetwork(std::string netName, std::string hostName, int port)
{
    int networdID__;
    const char * netName__ = netName.c_str();
    const char * hostName__ = hostName.c_str();
    networdID__ = agk::HostNetwork(netName__, hostName__, port);
    return networdID__;
}

int NetworkManager::JoinNetwork(std::string netName, std::string clientName)
{
    int networdID__;
    const char * netName__ = netName.c_str();
    const char * clientName__ = clientName.c_str();
    networdID__ = agk::JoinNetwork(netName__, clientName__);
    return networdID__;
}

bool NetworkManager::IsNetworkActive(int netID)
{
    switch (agk::IsNetworkActive(netID))
    {
    case 0: return false; break;
    case 1: return true;  break;
    }
}
#包括
#包括“NetworkManager.h”
#包括“template.h”
NetworkManager*NetworkManager::netManager=NULL;
NetworkManager*NetworkManager::Instance()
{
如果(!netManager)
netManager=新的NetworkManager;
返回netManager;
}
int NetworkManager::HostNetwork(std::string netName,std::string hostName,int port)
{
int networdID_u;;
const char*netName_uu=netName.c_str();
const char*hostName\uuu=hostName.c_str();
networdID\uuuu=agk::HostNetwork(网络名、主机名、端口);
返回networdID;
}
int NetworkManager::JoinNetwork(std::string netName,std::string clientName)
{
int networdID_u;;
const char*netName_uu=netName.c_str();
const char*clientName\uuu=clientName.c_str();
networdID\uuuu=agk::JoinNetwork(netName\uuuu,clientName\uuuu);
返回networdID;
}
bool NetworkManager::IsNetworkActive(int netID)
{
交换机(agk::IsNetworkActive(netID))
{
案例0:返回false;中断;
案例1:返回true;中断;
}
}

您在头文件中声明了
NetworkManager::NetworkManager()
,但在源文件中没有它的实现。

旁注:函数
实例
不是线程安全的。噢,snap!谢谢我会尽快投票选出正确答案。