我在使用 C++/CLI 和 Visual Studio 2010 时遇到问题。
我有一个网络管理器,它使用指向套接字的指针,如下所示:
class NetworkManager{
public:
SOCKET socket_open(char* local_ip_addr, int local_port);
private:
SOCKET* masterServerSocket;
};
当我想使用指针时,我检查指针是否为空,如下所示:
SOCKET NetworkManager::socket_open(char* local_ip_addr, int local_port)
{
if (masterServerSocket) {
return *masterServerSocket;
} else {
// Initalize mastersocket
...
}
}
但我似乎在 if 条件下得到了 NullReferenceException。删除 return 语句不会产生异常。
在当前代码中,指针始终为NULL,我在构造函数中将其设置为 NULL,并且不再分配给它。
单步执行应用程序确实会引发条件,所以我认为堆栈跟踪没有错。
我还尝试添加一个布尔值,在构造函数中初始化为 false 并对其进行检查,但仍然是同样的问题。所以我不认为这是由于运算符重载
我也试过!= NULL,同样的事情
如果有人能够给我一些指示(不是双关语)或帮助我,我将不胜感激!=)