我有一个模板类,想要为具有相同模板类型的类构建模板方法,它喜欢如下
template<class T>
class A
{
public:
void Set<T>(const T& t) {...} // I think this is wrong.
...
};
A<int> a;
a.Set<int>(10);
如何让它发挥作用?非常感谢!
答案 0 :(得分:3)
你不需要做任何特别的事情。在A
内,还定义了T
,其中包含Set
的定义。所以你只想说:
template< class T >
class A
{
public:
void Set( const T& t ) {...}
};
如果您想要模板Set
,以便可以使用不同的类型,您可以这样做:
template< class T >
class A
{
public:
template< typename U > void Set( const U& u ) {...}
};
最后,请注意,有时在调用模板函数时,您无需明确声明其模板参数 。它们将从用于调用它们的参数类型中推导出。 即,
template< typename T > void Set( const T& t ) {...}
Set( 4 ) // T deduced as int
Set( '0' ) // T deduced as char
Set<int>( '0' ) // T explicitly set to int, standard conversion from char to int applies
答案 1 :(得分:2)
如果您的意思是会员模板:
template<class T>
class A
{
public:
template <typename U> void Set(const U& u) {...}
};