【问题标题】:Calling another member function from a function in a class template in C++从 C++ 中的类模板中的函数调用另一个成员函数
【发布时间】:2015-12-19 10:35:44
【问题描述】:

假设我有一个名为myTemplate 的类模板,其中包含一些成员变量和两个成员函数funcTempAfuncTempB

template <class T>
class myTemplate
{
    private:
        //member variables
    public:
        T* funcTempA(T *arg1, T *arg2);
        T* funcTempB(T *arg1, T *arg2);
}

funcTempB 在其实现中调用funcTempA。我只是想知道调用它的正确语法是什么。

template <class T>
T* funcTempB(T *arg1, T *arg2)
{
    //how to call funcTempA here?
}

【问题讨论】:

    标签: c++ class-template


    【解决方案1】:

    直接调用即可,如:

    return funcTempA(arg1, arg2);
    

    顺便说一句:成员函数funcTempB的定义似乎错误,可能会导致一些意外错误。

    template <class T>
    T* myTemplate<T>::funcTempB(T *arg1, T *arg2)
    // ~~~~~~~~~~~~~~~
    {
        return funcTempA(arg1, arg2);
    }
    

    LIVE

    【讨论】:

    • 成员函数funcTempB的定义如果直接在头文件中实现就可以正确。
    • @ValentinTrinqué 不,这将是一个普通(非成员)函数。 rextester.com/ECKC37286
    • 好吧,我的意思是这样:rextester.com/RJA6882 并考虑到您实施 funcTempA 的方式,我们处于同一波浪潮中。
    • @ValentinTrinqué 你的意思是在类定义中实现?然后不能像OP那样在函数定义前面写template &lt;class T&gt;,所以我猜OP不是这个意思。
    【解决方案2】:

    要调用成员变量或成员函数,可以使用this关键字。

    template <class T>
    T* myTemplate<T>::funcTempB(T *arg1, T *arg2)
    {
        this->funcTempA(arg1, arg2);
        return ...;
    }
    

    您可以阅读this了解有关this的矿石

    【讨论】:

    • 这是双关语吗?
    • 你把这个双关语搞定了 :)
    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多