cpp 套接字,继承错误
cpp Socket, inheritage error
我创建一个套接字类,该套接字类具有用于创建不同类型的套接字(客户端和服务器)的静态成员。这是界面:
class Socket{
public:
int sendData(std::string _data);
std::string receiveData();
int closeSocket();
protected:
Socket();
virtual int initializeSocket() = 0;
virtual int connectSocket() = 0;
public: // static members: Factory, etc.
static Socket* createClientSocket(std::string _ip, std::string _port);
static Socket* createServerSocket(std::string _port);
protected:
WSADATA mWsaData;
SOCKET mSocket;
addrinfo *mResult, mHints;
这些孩子是:
-->服务器:
class ServerSocket: public Socket{
private:
ServerSocket(const std::string _port);
~ServerSocket();
int acceptClient();
private:
SOCKET mClientSocket;
std::string mPort;
}; // class ServerSocket
--> 客户端:
class ClientSocket: public Socket{
private:
ClientSocket(const std::string _ip, const std::string _port);
~ClientSocket();
private:
addrinfo *mPtr;
std::string mServerIp, mServerPort;
}; // class ClientSocket
但是在实现 initializeSocket 和其他成员时,我收到错误"不允许继承的成员。就我而言,继承的阶级可以进入父亲阶级的公共和受保护的memb。为什么会出现此错误?
提前致谢:)
编辑:该错误出现在许多成员中,例如在ServerSocket中.cpp
int ServerSocket::initializeSocket(){ <<--- HERE in the name of the function appears
// Resolve the server address and port
int iResult = getaddrinfo(NULL, mPort.c_str(), &mHints, &mResult);
if ( iResult != 0 ) {
printf("getaddrinfo failed with error: %dn", iResult);
WSACleanup();
return 1;
}
//..... ETC....
freeaddrinfo(mResult);
iResult = listen(mSocket, SOMAXCONN);
if (iResult == SOCKET_ERROR) {
printf("listen failed with error: %dn", WSAGetLastError());
closesocket(mSocket);
WSACleanup();
return 1;
}
return 0;
}
我写"<<- 这里..."
1>....sourcecorecommServerSocket.cpp(37): error C2509: 'initializeSocket' : member function not declared in 'BOViL::comm::ServerSocket'
1> c:programmingbovilsourcecorecommServerSocket.h(18) : see declaration of 'BOViL::comm::ServerSocket'
错误在于派生类未在其声明中声明成员函数。
class ClientSocket: public Socket{
public:
int sendData(std::string _data); <<--- Add this
private:
ClientSocket(const std::string _ip, const std::string _port);
~ClientSocket();
int initializeSocket(); <<--- Add this
int connectSocket(); <<--- Add this
private:
addrinfo *mPtr;
std::string mServerIp, mServerPort;
}; // class ClientSocket
以此类推
相关文章:
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 在 c++ 中拆分类和标头中的继承,错误
- enable_if继承的成员函数的名称查找错误
- C++模板类 - 继承调用错误的函数
- C++ 中的构造函数、继承、堆栈、堆、this-pointer 和段错误
- 为什么这个混合继承程序给出错误的输出?
- 使用多重继承时出现编译错误
- 多级继承错误 C2280:"atttempting to reference a deleted function"
- 相对于继承的构造函数,gcc 编译器是否还有一个错误?
- 从模板继承的 MSVC DLL 导出类会导致LNK2005已定义的错误
- 模板化类继承的子类定义中的错误
- C++错误LNK2005和不同项目文件的常规继承
- 错误:'int_type'未命名类型 - 如何继承 typedefs 和用法
- 在 soap_ssl_server_context(..) 中使用继承时 gsoap 中的分段错误
- C++中的继承,"...is an ambiguous base of ..."错误
- 与lambda一起使用虚拟继承在初始化列表中捕获此问题的GCC错误
- 收到未定义的引用错误 c++ 继承/多态性
- c++错误:继承转换无效
- 错误继承不能访问c++的方法