非模板类中的 C++ 模板函数

use*_*884 2 c++ templates

我希望开始在我的 C++ 类代码中放入模板,但我遇到了以前从未经历过的情况。基本上我有一个非模板类,但类中只有 1 个函数需要模板化。

class example
{
 public:
 example();
 ~example();
 <template T> templatefunction(T);
 nontemplatefunction(string x);
};
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,这是一个常见的解决方案还是我完全错误地查看了模板?

Ami*_*ory 7

正如人们在评论中指出的那样,这样做没有问题。

需要注意的一方面是方法的定义放在哪里templatefunction。目前(请参阅ISO cpp FAQ),您应该考虑将其放在头文件中,这与您可能对其他方法的定义所做的不同。因此你会有example.hpp

class example
{
 public:
 example();
 ~example();
 template<typename T> void templatefunction(T);
 void nontemplatefunction(string x);
};

template<typename T> void example::templatefunction(T)
{

}
Run Code Online (Sandbox Code Playgroud)

进而example.cpp

example::example(){}

void example::nontemplatefunction(string x)
{

}
Run Code Online (Sandbox Code Playgroud)