将方法与模板一起使用

Using methods with a Template

本文关键字:一起 方法      更新时间:2023-10-16

我对C++很陌生,所以想知道你们是否可以帮助我。

我正在浏览一段代码,并在模板下看到一个函数,如下所示:

MyClass(xyzType param1, xyzType param2)
  parameter1 (param1)
 ,parameter2 (param2)
{
    myMethod<ExternalLogicClass>(paramter1, parameter2);
    template<class TemplateClass>
    void MyClass::myMethod(xyzType parameter1, xyzType parameter2)
    {
        xyzType var = xyzObject->createSomething(new TemplateClass(parameter1), parameter2);
    }
};

我的问题是,为什么有人会这样做? myMethod很可能在没有模板的情况下创建。将函数与模板一起使用是否有优势,如果是,那么优势是什么?还有什么时候应该使用,什么时候不应该使用?

任何帮助不胜感激。谢谢

如发布,myMethod不使用MyClass的任何会员数据。它可以作为非成员函数模板实现。

template<class TemplateClass>
void myMethod(xyzType parameter1, xyzType parameter2)
{
    xyzType var = xyzObject->createSomething(new TemplateClass(parameter1), parameter2);
}

但是,如果myMethod依赖于某种MyClass状态,则将其作为模板成员函数是有意义的。

MyClass
{
    int myData;
    template<class TemplateClass>
    void myMethod(xyzType parameter1, xyzType parameter2)
    {
        xyzType var = xyzObject->createSomething(new TemplateClass(parameter1),
                                                 parameter2,
                                                 myData); // Member data.
    }
};