2

フレンド演算子関数の定義に苦労しています。私のコードは次のとおりです。

    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 は、ベクトルを作成し、それらのベクトルに対してさまざまな機能を実行するためのクラスです (NB は、できるだけわかりやすくするためにコードを単純化しました)。コンパイル時、使用

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

次のコンパイルエラーが発生します

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

私は明らかに何かが欠けているので、何か提案があれば感謝します。ありがとう。

4

1 に答える 1

6

クラスメンバーではなく、フレンド演算子を宣言したので、削除しますVecClass<typ>::

template <typename typ>
void operator+(VecClass<typ> &op1,VecClass<typ> &op2)
{
        /* do some stuff on op1 and op2 in here */
}
于 2012-07-04T13:12:16.833 に答える