我正在尝试专门化这样的模板方法:
template <typename X, typename Y>
class A {
public:
void run(){};
};
template<typename Y>
void A<int, Y>::run() {}
但我明白了
main.cpp:70:17: error: nested name specifier 'A<int, Y>::' for declaration does not refer into a class, class template or class template partial specialization
我知道特化尚未完成,因为我尚未使用特定的 Y
实例化它,但我该如何做到这一点?
最佳答案
您首先需要部分特化类本身,包括函数声明。之后你可以写出它的定义。您不能部分专门化某个函数。
例如
#include <iostream>
template <typename X, typename Y>
class A {
public:
void run()
{
std::cout << "How do you do?\n";
};
};
template<typename Y>
class A<int, Y>
{
public:
void run();
};
template<typename Y>
void A<int, Y>::run()
{
std::cout << "Hello World!\n";
}
int main()
{
A<int, int>().run();
A<double, int>().run();
return 0;
}
程序输出。
Hello World!
How do you do?
关于c++ - 类模板方法特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63748206/