Visual Studio 2010 で C++/CLI を使用すると問題が発生します。
次のようなソケットへのポインターを使用するネットワークマネージャーがあります。
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 も試しましたが、同じことです
誰かが私にいくつかの指針を与えることができれば(しゃれた意図はありません)、私を助けてくれれば幸いです!=)