在课堂上C++模板
C++ templates in class
我有一些类,它有一些方法。我只想将模板用于一种方法,而不是所有类。我可以这样做吗?
class Test {
private:
int i;
public:
Test(int i);
int getVal();
void setVal(int i);
template <class Type>
int testTemplate(Type val);
};
这是完全合法的,并且在许多情况下使用,例如转换函数模板。有关详细信息,请参阅以下内容:http://en.cppreference.com/w/cpp/language/member_template
只是请记住内联或至少在同一文件中编写此函数定义,否则无法编译。此外,如果项目中没有对此函数的调用,则不会生成它,从而节省一些空间。
根据评论,该代码完全合法。它应该编译和工作(如果正确实现)。至于这是否是一个好的解决方案,那就没问题了。如果这是您需要模板化的唯一函数,则只执行该函数。如果将整个类设置为模板化类,则可能会增加一些不需要的额外开销。所以就像你所做的那样,只要有一个功能。
这是
合法的。无论是在类外部还是内部声明模板,只需仅在方法中使用模板中定义的类型,这将使函数模板用于所需的唯一方法。
相关文章:
- .cpp和.h文件中的模板专用化声明
- C++模板来检查友元函数的存在
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何在c++中为模板函数实例创建快捷方式
- 使用C++中的模板和运算符重载执行矩阵运算
- 有人能分解一下这个c++模板的语法吗
- 如何在c++17中制作一个模板包装器/装饰器
- 模板化建造师专业化
- 调用专用模板时出错"no matching function for call to [...]"
- 模板元程序查找相似的连续类型名称
- 如何在C++20中创建模板别名的推导指南
- 没有名称的C++模板参数
- 具有重复类型的C++可变模板
- 如何将enable-if与模板参数和参数包一起使用
- 没有用于初始化C++中的变量模板的匹配构造函数