我希望开始在我的c ++类代码中添加模板,但我遇到过以前没见过的情况。基本上我有一个非模板类,但在我需要模板化的类中只有一个函数。
class example
{
public:
example();
~example();
<template T> templatefunction(T);
nontemplatefunction(string x);
};
这可能吗?如果是这样,它是一个常见的解决方案还是我完全错误地看模板?
答案 0 :(得分:2)
正如人们在评论中所指出的,这样做没有问题。
需要注意的一个方面是放置方法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)
{
}
然后example.cpp
:
example::example(){}
void example::nontemplatefunction(string x)
{
}