私は今までC++を勉強してきましたが(C言語の学習に多くの時間を費やしましたが)、私の質問は経験豊富なプログラマーには聞こえるかもしれませんが、まだ答えは見つかりませんでした:この関数呼び出しをどのように理解する必要がありますか?
私はsample projectで働いています。これは、クライアントソケットベースのチャットアプリケーションを実装して、Windowsソケットプログラミングを詳しく解説しています。のない別の宣言がありません
virtual BOOL Accept(
CAsyncSocket& rConnectedSocket,
SOCKADDR* lpSockAddr = NULL,
int* lpSockAddrLen = NULL);
:
m_Server.Accept(m_Server.m_Client)
受け入れ()関数はCAsyncSocketクラスのクラスで宣言されています
接続要求のためのサーバを待機させるために使用される関数の呼び出しがありますコード内にこの宣言を上書きするAccept()関数があるため、2番目と3番目のパラメータは定義済みのデフォルトパラメータであるため、NULLと見なされます。 (だから私はそれが機能は、この文脈で仮想として宣言されていることではない関連だと思います。)
オブジェクトm_Serverとm_Clientは(MFC CAsyncSocketクラスから派生しているのCSocketから派生したクラスServerSocketを、両方のタイプです標準クラス)。
今、私の質問に来る:これらのオブジェクトの両方は別々に作成され、それらの間に階層関係はありません。だから私はどのように関数呼び出しを理解する必要があります受け入れる(m_Server.m_Client)?この点演算子の使い方の正確な用語式は何ですか/ここでは正確には何ですか/ m_Server.m_Clientの具体的なパラメータは何ですか?
The code can be downloaded from codeproject.com:私はこれについての説明を本当に感謝しm_serverはChatServerDlg.hで定義され、m_ClientはServerSocket.h
で定義されています。前もって感謝します。
特に、あなたがそのコードから何を理解できなかったかを教えていただければ、答えが分かりやすくなるかもしれません。 –
_ "この場合のm_Server.m_Clientの具体的なパラメータは何ですか?" _メンバ変数m_Clientは、m_Serverインスタンスから取得します。 –
@πάνταῥεῖ私は、彼は、m_Serverとm_Clientは同じタイプのServerSocketの別々のオブジェクトとして作成されていると思います。私が疑問に思っていることは、「引数m_Server **。** m_Clientを使ってAccept関数をどのように呼び出すことが可能か」です。このドットはメンバを示しますが、この場合、m_Clientはメンバではなく別のオブジェクトです。 c128linux、これはあなたが求めていることですか? –