none
operator 父類別 RRS feed

  • 問題

  • 各位好,我在 VS2017 的 VC++ 中設計了兩個向量類別 CVector2FLOAT CVectorReference2FLOAT 是繼承的關係

     CVector2FLOAT A, B, C;
     A.Set(3, 5);
     B.Set(5, 4);
     C = A + B * 5.5f;

    結果出錯了,但是我看不出來錯了甚麼,類似的設計在 VS2008 是通過的,我漏了甚麼該注意的嗎?

    error C2679: 二元運算子 '+': 找不到使用右方運算元類型 'CVector2FLOAT' 的運算子 (或是沒有可接受的轉換)
    note: 可能是 'CVector2FLOAT CVector2FLOAT::operator +(CVectorReference2FLOAT &)'

    class CVector2FLOAT :public CVectorReference2FLOAT

    CVector2FLOAT CVector2FLOAT::operator+(CVectorReference2FLOAT & Vector);
    CVector2FLOAT CVector2FLOAT::operator*(float Value);
    CVectorReference2FLOAT & operator=(const CVectorReference2FLOAT & Vector);

    2019年11月28日 上午 02:01

所有回覆

  • CVector2FLOAT CVectorReference2FLOAT類別是怎麼寫的?
    2019年11月28日 上午 04:25
  • vs2017要求代码必须严格遵守c++11标准编写。在c++11中分为【左值】和【右值】,因此你的操作符函数不正确。你需要分别定义左值(&)和右值(&&)或const左值(const &)的operator+函数。
    2019年11月28日 上午 04:46
  • 了解了~ 我研究一下,非常感謝
    2019年11月28日 上午 05:24