gpt4 book ai didi

c++ - 类 Stack 的模板特化

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

我想编写 Stack 类的两个不同实现。

(1)

template<typename element_type, typename container_type = std::vector<element_type> >
class Stack{//...

};

(2)

template<typename element_type, size_t container_size>
class Stack{
};

如果我在一个文件中定义这两个实现,我会得到编译器错误。是否可以将它们都放在同一个文件中?

//compiler errors:

Stack.hpp:119:46: error: declaration of template ‘template<class element_type, long unsigned int container_size> int containers::Stack()’
Stack.hpp:25:9: error: conflicts with previous declaration ‘template<class element_type, class container_type> class containers::Stack’
Stack.hpp:25:9: error: previous non-function declaration ‘template<class element_type, class container_type> class containers::Stack’
Stack.hpp:119:46: error: conflicts with function declaration ‘template<class element_type, long unsigned int container_size> int containers::Stack()’

最佳答案

不,你不能。您不能拥有具有不同模板参数的模板类的两个版本。我建议以不同的方式调用这两种 Stack 或将它们放在不同的命名空间中。

关于c++ - 类 Stack 的模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10789889/

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