为什么CAsyncSocket没有复制构造函数或=运算符?

时间:2012-08-15 07:44:10

标签: windows sockets networking constructor copy

我已经内置了CAsyncSocket,并希望传递对象。

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

当我做

时,我得到了sevaral编译错误
 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

我应该制作我的复制构造函数,但由于基类没有实现,我的代码会在运行时崩溃。

重要提示:我应该复印吗?我的新对象会收到原始对象的事件吗?

1 个答案:

答案 0 :(得分:0)

C ++中的

Polymorphic类型通常是non-copyable,因为获取基类的副本很容易导致slicing