首页 > 解决方案 > 相同例程,不同成员变量类型时的c ++类声明

问题描述

我正在尝试制作这样的课程

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 的类,而不是这两个类。

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

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

标签: c++class

解决方案


您可以使用模板类:

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

然后使用:

using IPclass = NetworkClass<tcp::socket>;

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


推荐阅读