c++类声明时,相同的例程,不同的成员变量类型

c++ class declaration when same routine, different member variable type

本文关键字:成员 变量 类型 例程 声明 c++      更新时间:2023-10-16

我正试图创建一个类似的类

class IPclass {
void SendData();
io_service io_service_;
tcp::socket tcp_socket_{io_service_};
};
class UDSclass {
void SendData();
io_service io_service_;
local::stream_protocol::socket tcp_socket_{io_service_};
};

问题是,IPclass和UDSclass有相同的例程,具有相同的成员变量,但有一个区别:套接字类型。

我想创建一个名为SessionClass的类,而不是这两个类。

这些都是我尝试过的选择和失败的原因。

  • 并集:不能使用相同的变量名。(我想在方法上使用var而不是u.var1(
  • 模板:必须在每个构造函数上定义模板类型名称
  • 在一个类中使用两个不同的变量:必须使用具有不同参数的方法

这个问题有什么建议或已知的解决方案吗?非常感谢。

您可以使用模板化类:

template <typename NetworkType>
class NetworkClass
{
NetworkType tcp_socket_{io_service_};
};

然后使用:

using IPclass = NetworkClass<tcp::socket>;

如果您需要更多,您可以使用类型特征来定义更高级的行为,而不需要动态多态性。