gpt4 book ai didi

c++函数模板编译错误 "‘containerType’不是模板”

转载 作者:太空狗 更新时间:2023-10-29 20:01:04 24 4
gpt4 key购买 nike

我正在尝试编写一个函数来“字符串化”参数以用于日志记录。例如,我想写这样的东西:

vector<string> queries; 
set<uint_8> filters;
LOG(INFO) << stringify<vector, string>(queries);
LOG(INFO) << stringify<set, uint_8>(filters);

这是我写的函数模板:

template <typename containerType, typename elemType>
string _stringify(const string name, const containerType<elemType> &elems) {
ostringstream os;
os << name << ": [";
BOOST_FOREACH(elemType elem, elems) {
os << elem << ",";
}
os << "]";
return os.str();
}

这是我收到的错误消息:error: ‘containerType’ is not a template

谢谢,亚历克斯

最佳答案

您需要使用模板模板参数,例如

template <template <typename> class containerType, typename elemType>
string _stringify(const string name, const containerType<elemType>& elems)

请注意,如果您希望将其与标准库容器一起使用,它们中的大多数都有多个模板参数(例如,序列容器有两个:一个用于值类型,一个用于分配器类型)。

使用所有容器都有的 value_type typedef 可能更容易(也更好)。例如,

template <typename ContainerT> 
void f(const ContainerT& c)
{
typedef typename ContainerT::value_type ElementT;
// Use ContainerT and ElementT
}

关于c++函数模板编译错误 "‘containerType’不是模板”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436518/

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