1

我正在尝试使用类用户继承一个名为 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_ */
4

2 回答 2

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。另请注意,默认情况下继承 a,因此您是私有继承classprivate

于 2013-08-06T13:03:43.480 回答
1

您需要从头文件中删除基类初始化程序并将其移动到您的实现中,即删除 TCPSocket(...)

于 2013-08-06T13:00:41.933 回答