【发布时间】:2014-07-06 00:23:26
【问题描述】:
我对派生类的私有函数中使用的基类的受保护构造函数有疑问:
基类:
class Socket
{
public:
virtual ~Socket();
// Constructors :
Socket();
protected:
Socket(SOCKET& s);
};
派生类:
class Server : public Socket
{
public:
Server();
~Server();
private:
int ServerLoop();
};
我尝试在 ServerLoop 函数中创建 Socket 对象
SOCKET client_sock = accept( m_socket, ( sockaddr* )&client_addr, &size );
Socket* Client = new Socket( client_sock );
^^^^^^
但我得到这个错误:
error C2248: 'NET_SOCKETS::Socket::Socket' : cannot access protected member
declared in class 'NET_SOCKETS::Socket'
在行过^^^^。是什么导致了这个错误?
【问题讨论】:
-
首先,问问自己你是否真的需要使用动态内存。这可能会消失或为您提供更好的设计问题线索。
标签: c++ constructor protected