gpt4 book ai didi

c++ - 具有模板类参数的模板类特化

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:39 24 4
gpt4 key购买 nike

假设我有:

template < typename T >
class ClassA
{
void doTheStuff (T const * t);
};

template < typename T >
class ClassB
{
// Some stuff...
};

我想像这样为 ClassB 模板的所有实例专门化 doTheStuff 方法:

template <typename T>
void ClassA< ClassB< T > >::doTheStuff (ClassB< T > const * t)
{
// Stuff done in the same way for all ClassB< T > classes
}

当然,这是行不通的。遗憾的是我不知道我该怎么做。

使用 visual studio 的编译器我得到:

 error C2244: 'ClassA<T>::doTheStuff' : unable to match function definition to an existing declaration
see declaration of 'ClassA<T>::doTheStuff'
definition
'void ClassA<ClassB<T>>::doTheStuff(const ClassB<T> *)'
existing declarations
'void ClassA<T>::doTheStuff(const T *)'

我找到了这篇文章:Templated class specialization where template argument is a template

所以我按照建议尝试了完整的类特化,但它也不起作用:

template <>
template < typename U >
class ClassA< ClassB< U > >
{
public:
void doTheStuff (ClassB< U > const * b)
{
// Stuff done in the same way for all ClassB< T > classes
}
};

视觉说:

error C2910: 'ClassA<ClassB<U>>' : cannot be explicitly specialized

欢迎任何帮助!

弗洛夫。

最佳答案

删除多余的template<>它将起作用。

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

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