わかりましたので、私は複数のプラットフォーム用にプログラミングすることを学んでいます。多くのインクルード/ライブラリがマクロを使用して、特定のプラットフォームで呼び出す関数をコンパイラに指示するのを見ました。
そこで、次のように定義しました。
#if defined _WIN32 || defined _WIN64
#define Close(Handle) CloseHandle(Handle)
#else
#define Close(Handle) close(Handle)
#endif
しかし、私の Socket クラスには次のメンバー関数があります。
Socket::Close()
{
//Close socket and clean up..
}
私が次のことをするとき:
Socket sock(Port, LocalHost);
sock.Close();
私は得る:
error: 'class Socket' has no member named 'CloseHandle'
#define Close(Handle) CloseHandle(Handle)
^
note: in expansion of macro 'Close'
sock.Close();
^
どうすれば修正できるのでしょうか、それとも Close を取り除いて typedef にするべきでしょうか?