在课堂上C++模板

C++ templates in class

本文关键字:模板 C++ 课堂      更新时间:2023-10-16

我有一些类,它有一些方法。我只想将模板用于一种方法,而不是所有类。我可以这样做吗?

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

只是请记住内联或至少在同一文件中编写此函数定义,否则无法编译。此外,如果项目中没有对此函数的调用,则不会生成它,从而节省一些空间。

根据评论,该代码完全合法。它应该编译和工作(如果正确实现)。至于这是否是一个好的解决方案,那就没问题了。如果这是您需要模板化的唯一函数,则只执行该函数。如果将整个类设置为模板化类,则可能会增加一些不需要的额外开销。所以就像你所做的那样,只要有一个功能。

这是

合法的。无论是在类外部还是内部声明模板,只需仅在方法中使用模板中定义的类型,这将使函数模板用于所需的唯一方法。