C ++将operator关键字与模板一起使用?

时间:2012-07-04 13:10:17

标签: c++ templates operator-overloading friend

我正在定义朋友操作员功能。我的代码如下:

    template <typename typ>
    class VecClass 
    {
     public:
        VecClass();
        /* other class definitions */
        friend void operator+(VecClass op1,VecClass op2);
    }

    template <typename typ>
    void VecClass<typ>::operator+(VecClass<typ> &op1,VecClass<typ> &op2)
    {
        /* do some stuff on op1 and op2 in here */
    }

其中VecClass是一个用于创建向量并在这些向量上执行各种函数的类(N.B.我简化了代码以尝试尽可能清晰)。编译时,使用

    int main()
    {
        VecClass=a,b;
        a+b;
        return 0;
    }

我收到以下编译错误

     error C2039: '+' : is not a member of 'VecClass<typ>'

我显然遗漏了一些东西,并会对任何建议表示感谢。感谢名单。

1 个答案:

答案 0 :(得分:6)

您声明了一个朋友操作员,而不是类成员,因此请删除VecClass<typ>::

template <typename typ>
void operator+(VecClass<typ> &op1,VecClass<typ> &op2)
{
        /* do some stuff on op1 and op2 in here */
}