我在使用Visual Studio 2010使用C ++ / CLI时遇到问题。
我有一个网络管理器,它使用指向socket的指针,如下所示:
class NetworkManager{
public:
SOCKET socket_open(char* local_ip_addr, int local_port);
private:
SOCKET* masterServerSocket;
};
当我想使用指针时,我将指针检查为null,如下所示:
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,同样的事情
如果有人能给我一些指示(没有双关语意)或帮助我,我会很感激! =)
答案 0 :(得分:1)
来自hvd的评论是正确的,我正在调用一个null NetworkManger指针。原来堆栈跟踪不是那么有用=)
感谢您的回复!
答案 1 :(得分:1)
您是否正在指向NetworkManager对象?如果是,你验证是不是NULL?