gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:42 26 4
gpt4 key购买 nike

我正在尝试创建一个类似这样的类

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

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

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

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

最佳答案

您可以使用模板化类:

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

然后使用:

using IPclass = NetworkClass<tcp::socket>;

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

关于相同例程,不同成员变量类型时的c++类声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53080781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com