我希望开始在我的 C++ 类代码中放入模板,但我遇到了以前从未经历过的情况。基本上我有一个非模板类,但类中只有 1 个函数需要模板化。
class example
{
public:
example();
~example();
<template T> templatefunction(T);
nontemplatefunction(string x);
};
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是这样,这是一个常见的解决方案还是我完全错误地查看了模板?
正如人们在评论中指出的那样,这样做没有问题。
需要注意的一方面是方法的定义放在哪里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)