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

时间:2018-10-31 10:03:34

标签: c++ class

我正在尝试上这样的课

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
  • 模板:必须在每个构造函数上定义模板类型名称。
  • 在一类中使用2个不同的变量:必须使用具有不同参数的方法

是否有针对此问题的建议或已知解决方案? 非常感谢。

1 个答案:

答案 0 :(得分:5)

您可以使用模板化的类:

textarea

然后使用:

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

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