【发布时间】:2018-10-31 10:03:34
【问题描述】:
我正在尝试制作这样的课程
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 个不同的变量:必须使用具有不同参数的方法
对于这个问题有什么建议或已知的解决方案吗? 非常感谢。
【问题讨论】:
-
你听说过继承吗?
-
如果
SendData的定义在两者中基本相同,那么模板听起来是个不错的答案 - 您能否详细说明您在使用类模板时遇到的问题?如果功能相当不同,多态可能是要走的路。 -
模板。相同的例程具有相同的成员变量,不同的类型。这正是模板的用途。整个 C++ 都建立在此之上。如果你不喜欢它,也许你需要一种不同的语言。