c++ over linux gcc 继承

标签 c++ linux inheritance

我正在尝试用类 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/

相关文章:

c# - 继承类规则

c++ - 我可以从 std::string 继承以提供强类型字符串吗?

c++ - 转换 unicode 字符串,反之亦然

linux - XResizeWindow后,绘制的新窗口内容不显示

linux - 了解不同的 Docker 组件

linux - 一段时间内数据流的唯一计数和排序

ruby-on-rails - 如何从 ruby​​ 父类(super class)中的方法访问子类中的当前 __FILE__

c++ - Qt QTimeLine 跳过第一帧

c++ - 模块化开发的互通方式选择

c++ - FFI/MemoryPointer 内存分配