У меня проблемы с использованием 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
...
}
}
Но я, кажется, получаю исключение NullReferenceException для условия if. Удаление оператора return не дает исключения.
В текущем коде указатель всегда NULL, я установил его в NULL в конструкторе и больше никогда не присваиваю.
Проходя через приложение, оно действительно вызывается условием, поэтому я не думаю, что трассировка стека неверна.
Я также попытался добавить логическое значение, инициализировалось в false в конструкторе и проверил это, но проблема та же. Так что я не думаю, что это из-за перегрузки оператора
Я пытался! = NULL, тоже самое
Если кто-нибудь сможет дать мне несколько советов (без каламбура) или помочь мне, я буду признателен! знак равно
Комментарий от hvd был верным, я вызывал нулевой указатель NetworkManger. Оказывается, трассировка стека не так уж полезна =)
Спасибо за ваш ответ!
Вы делаете указатель на объект NetworkManager? Если да, вы проверяете, что это не NULL?