- 9 名前:つづき mailto:sage [2011/09/21(水) 08:06:20.37 ]
- class Message {
SOCKET _dst_socket; COMMAND _command; public: // コンストラクタ、デストラクタ、セッタ、ゲッタ ... virtual int sizeOf() cosnt { return sizeof( *this ); } }; class TextMessage : public Message { char _text[ 16 ]; public: // コンストラクタ、デストラクタ、セッタ、ゲッタ ... virtual int sizeOf() const { return sizeof( *this ) } }; class Server{ ... }; bool Server::send( SOCKET dst_socket, const Message& msg ) { if( ::send( dst_socket, (char*) &msg, msg.sizeOf(), 0 ) != SOCKET_ERROR ) // このへんで sizeOf() を呼ぶとエラー。sizeof( TextMessage ) とかだとOK } class Tester { public: static void test( const Message& msg ) { cout << msg.sizeOf() << endl; } }; int main() { TextMessage tmsg; Tester::test( tmsg ); // これはOK ... }
|

|