gpt4 book ai didi

c++ - 如何在 map 中存储模板对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:11 24 4
gpt4 key购买 nike

我有模板类

template<class T1 ,class T2, class T3>
class server_fd
{
T1 servport;
T2 server_ip;
T3 servobj;
int local_port;

public:
server_fd(const T1& servport, const T2& server_ip,const T3 servobj) {
this->servport=servport;
this->server_ip=server_ip;
this->servobj=servobj;

cout <<"check \n"<<this->server_ip;
}
};

现在我想把这个类的对象存储在 map 中,所以我这样声明 map ..

 map<int,server_fd* > MapPairList;

在此之后,当我编译我的代码时,它给出了这个错误 错误:模板参数 2 无效 错误:模板参数 4 无效

但是,如果我不使用模板类,我可以成功定义 map 。

有没有其他方法可以定义用于存储模板类对象的映射?请告诉我。

最佳答案

尝试将基类添加到您的模板类:

class server_fd_entry {};

template<class T1 ,class T2, class T3>
class server_fd
{
<snip>
}

...

map<int,server_fd_entry* > MapPairList;

这样映射可以存储所有 server_fd 类型而不考虑模板参数。然而,我可以看到这会导致很多向下转换,所以另一种方法是确保在声明映射时指定所有模板参数:

map<int,server_fd<int,int,int>* >

这样您只能存储一种特定类型的 server_fd,但如果仅此而已,它可能会更整洁。

关于c++ - 如何在 map 中存储模板对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12559677/

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