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)
{
   ....
}

structC++ では、すべての場所を入力する必要がないことに注意してください。また、 a の継承classprivateデフォルトであるため、非公開で継承していることにも注意してください。

于 2013-08-06T13:03:43.480 に答える