大佬教程收集整理的这篇文章主要介绍了c – 使用没有模板参数的模板类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
template< typename A > struct Foo { const A& a_; Foo( const A& a ) : a_( a ) { }; };
因此,我必须像这样构造这个类:
int myval = 0; Foo< int > foo( myval );
当在构造函数中已经指定int时,必须将int指定为模板参数似乎是多余的.我想用某种方式像这样使用它:
Foo foo( myval );
因为,我得到编译器错误:
error C2955: 'Foo' : use of class template requires template argument list
谢谢,
PaulH
一个类可以有多个构造函数,也可能没有构造函数,这些构造函数具有类模板的类型参数的参数,因此没有办法使这个函数适用于所有类模板(在我看来,有时会让这项工作感到困惑,但不是全部时间).
如果您可以根本不命名类型,则可以编写构造Foo< T>的MakeFoo< T>()函数模板.并使用函数模板参数推导:
template <typename A> Foo<A> MakeFoo(const A& a) { return Foo<A>(a); }
此模式通常用于C(例如,参见make_shared).
但是,如果要将返回的对象存储在变量中,则该变量仍需要具有类型.如果您能够转移到支持C 0x自动的编译器(如Visual C 2010),那么您可以使用它.否则,您可以使用像BOOST_AUTO
这样的第三方解决方案或编写自己的解决方案(尽管这可能是相当多的工作( – :).
使用auto,您的代码将如下所示:
auto foo(MakeFoo(myval));
以上是大佬教程为你收集整理的c – 使用没有模板参数的模板类全部内容,希望文章能够帮你解决c – 使用没有模板参数的模板类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。