我正在尝试使用类user继承一个名为TCPSocket的类。尽管我正在使用ifndef,但我收到了消息: 先前在这里定义的'User :: User(int,sockaddr_in,sockaddr_in)
这来自我的头文件:
#ifndef USER_H_
#define USER_H_
#include <string.h>
#include "TCPSocket.h"
class User : TCPSocket {
string _U_Name;
string _in_session;
string _in_room;
public:
User(int connected_sock,struct sockaddr_in server_addr, struct sockaddr_in peer_addr)
:TCPSocket(connected_sock,server_addr, peer_addr);
virtual ~User();
};
#endif /* USER_H_ */
答案 0 :(得分:6)
您的构造函数部分在头文件中实现:
User(int connected_sock, sockaddr_in server_addr, sockaddr_in peer_addr)
: TCPSocket(connected_sock,server_addr, peer_addr);
如果已在.cpp
文件中实现构造函数,请删除初始化列表:
User(int connected_sock, sockaddr_in server_addr, sockaddr_in peer_addr);
或通过添加正文来完成实施,并确保.cpp
User(int connected_sock, sockaddr_in server_addr, sockaddr_in peer_addr)
: TCPSocket(connected_sock,server_addr, peer_addr)
{
....
}
请注意,在C ++中,您不必在整个地方键入struct
。另请注意,默认情况下class
的继承为private
,因此您将私下继承。
答案 1 :(得分:1)
您需要从头文件中删除基类初始化器并将其移动到您的实现中,即删除TCPSocket(...)