0

私は CAsyncSocket を継承しており、オブジェクトを渡したいと思っていました。

 class ClientSocket : public CAsyncSocket
{
CAsyncSocket nitSocket;
    public:
ClientSocket(void);
virtual ~ClientSocket(void);
 };

実行すると、いくつかのコンパイルエラーが発生します

 void SomeOtherClass::func(ClientSocket &socket)
     this->socket = socket;
 }

エラー:

'CAsyncSocket::operator =' : cannot access private member declared in class          'CAsyncSocket'

ファイルを調べて見つけました

private:
CAsyncSocket(const CAsyncSocket& rSrc);    // no implementation
void operator=(const CAsyncSocket& rSrc);  // no implementation

コピー コンストラクターを作成する必要がありますが、基本クラスの実装がないため、実行時にコードがクラッシュします。

重要: コピーを作成する必要がありますか? 新しいオブジェクトは元のオブジェクトのイベントを受け取りますか?

4

1 に答える 1

0

C++ のポリモーフィック型は、基本クラスのコピーを取得すると簡単にスライシングが発生するため、通常はコピー不可になります。

于 2012-08-16T12:32:41.027 に答える