gpt4 book ai didi

c++ - 从具有可变数量的模板参数的模板化类中的特定基础获取结果

转载 作者:行者123 更新时间:2023-11-28 06:49:02 25 4
gpt4 key购买 nike

我正在尝试实现如下所示的模板化类。

   struct Ciccio2 : public T1, public T2, public T3, public T4
{
template<typename TR>
int get(const string& s) const
{
return TR::operator()(s);
}
};

所有模板化参数都像下面的示例类

   struct AA{ 
int operator()(const string& s) { return 1;}
};

我也在尝试拥有一个全局提取函数但是当我使用下面的模板函数时 g++ 给我一个构建错误说

   template<class TA, class T1, class T2, class T3, class T4>
int extract(const Ciccio2<T1,T2,T3,T4>& obj, const string& s)
{
return obj.get<TA>(s);
}

下面的代码并没有说

expected primary expression before > token

我尝试实现的是否正确?

最佳答案

obj是类型相关的表达式,编译器不会使用名称查找来确定是否 obj.get是对象、函数、类型或模板。除非您强制它不这样做,否则编译器会假定它是用于语法分析的对象或函数。接下来它会看到 <小于运算符(不是 < 开头的模板参数列表),很快就会感到困惑。你需要:

return obj.template get<TA>(s);

另见问题 Where and why do I have to put the template and typename keywords?

关于c++ - 从具有可变数量的模板参数的模板化类中的特定基础获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372132/

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