C++ 调用空构造函数时没有匹配函数-当I';我正在调用一个现有的非空构造函数
继承顺序:basicwinsocket我认为您需要重新阅读virtual heritation.tl的语义;dr当存在虚拟基时,最派生的类必须提供ctor初始值设定项,否则会出现初始值设定项冲突。我认为您需要重新阅读virtual heritation.tl的语义;dr当存在虚基时,最派生的类必须提供ctor初始值设定项,否则会出现初始值设定项冲突C++ 调用空构造函数时没有匹配函数-当I';我正在调用一个现有的非空构造函数,c++,c++11,C++,C++11,继承顺序:basicwinsocket我认为您需要重新阅读virtual heritation.tl的语义;dr当存在虚拟基时,最派生的类必须提供ctor初始值设定项,否则会出现初始值设定项冲突。我认为您需要重新阅读virtual heritation.tl的语义;dr当存在虚基时,最派生的类必须提供ctor初始值设定项,否则会出现初始值设定项冲突 class WinsockTCPClient : public virtual ITCPClient, public virtu
class WinsockTCPClient
: public virtual ITCPClient,
public virtual WinsockTCPSocket
{
public:
WinsockTCPClient(const std::string& ip, uint16_t port, bool auto_connect = true);
virtual ~WinsockTCPClient() {}
};
WinsockTCPClient::WinsockTCPClient(
const std::string& ip,
uint16_t port,
bool auto_connect)
: WinsockTCPSocket(ip, port)
{
if( auto_connect )
Connect();
}
class WinsockTCPSocket
: public virtual BasicWinsockSocket
{
public:
WinsockTCPSocket()
: BasicWinsockSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
{}
WinsockTCPSocket(const std::string& ip, uint16_t port)
: BasicWinsockSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, ip, port)
{}
virtual ~WinsockTCPSocket() {}
};
class BasicWinsockSocket
: public virtual ISocket
{
public:
BasicWinsockSocket(int address_family,
int type,
int protocol);
BasicWinsockSocket(int address_family,
int type,
int protocol,
const std::string& ip,
uint16_t port);
BasicWinsockSocket(SOCKET socket, struct sockaddr_in addr)
: m_socket(socket), m_addr(addr)
{}
virtual ~BasicWinsockSocket();
protected:
SOCKET m_socket;
SockAddrIn m_addr;
int m_lastError;
};
BasicWinsockSocket::BasicWinsockSocket(
int address_family,
int type,
int protocol)
: m_socket( socket(address_family, type, protocol) )
{
if ( INVALID_SOCKET == m_socket )
m_lastError = WSAGetLastError();
}
BasicWinsockSocket::BasicWinsockSocket(
int address_family,
int type,
int protocol,
const std::string& ip,
uint16_t port)
: m_socket( socket(address_family, type, protocol) ),
m_addr(ip, port)
{
if ( INVALID_SOCKET == m_socket )
m_lastError = WSAGetLastError();
}
BasicWinsockSocket::~BasicWinsockSocket()
{
this->Close();
}
||=== Build: Debug in x (compiler: GNU GCC Compiler) ===|
src\networking\WinsockTCPClient.cpp||In constructor 'networking::WinsockTCPClient::WinsockTCPClient(const string&, uint16_t, bool)':|
src\networking\WinsockTCPClient.cpp|14|error: no matching function for call to 'networking::BasicWinsockSocket::BasicWinsockSocket()'|
src\networking\WinsockTCPClient.cpp|14|note: candidates are:|
include\networking\BasicWinsockSocket.h|28|note: networking::BasicWinsockSocket::BasicWinsockSocket(SOCKET, sockaddr_in)|
include\networking\BasicWinsockSocket.h|28|note: candidate expects 2 arguments, 0 provided|
include\networking\BasicWinsockSocket.h|23|note: networking::BasicWinsockSocket::BasicWinsockSocket(int, int, int, const string&, uint16_t)|
include\networking\BasicWinsockSocket.h|23|note: candidate expects 5 arguments, 0 provided|
include\networking\BasicWinsockSocket.h|20|note: networking::BasicWinsockSocket::BasicWinsockSocket(int, int, int)|
include\networking\BasicWinsockSocket.h|20|note: candidate expects 3 arguments, 0 provided|
include\networking\BasicWinsockSocket.h|15|note: networking::BasicWinsockSocket::BasicWinsockSocket(const networking::BasicWinsockSocket&)|
include\networking\BasicWinsockSocket.h|15|note: candidate expects 1 argument, 0 provided|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|