我正在尝试用类 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_ */
最佳答案
您的构造函数在头文件中部分实现:
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
。另请注意,类
的继承默认为私有(private)
,因此您是私有(private)继承。
关于c++ over linux gcc 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18080897/