2013-12-07 66 views
0

我遇到問題。作爲成員函數,我實現了一個自定義的operator*C++運算符重載看不到其他運算符

在報頭:

class Matrix 
{ 
public: 
Matrix operator*(int arg); //(1) 
... 
} 

Matrix operator*(int a, const Matrix& m) 
{ 
    return m * a; //(2) 
} 

(1)I可在main.cpp中做到這一點:

Matrix a = Matrix::GetRandom..... 
Matrix b = a * 2; 

(2)在此行中,我發現了一個編譯器錯誤:

IntelliSense: no operator "*" matches these operandsnoperand types are: const Matrix * int

我該如何解決?

+0

你也可以寫兩個運營商(非會員)友元函數'朋友矩陣運算符(矩陣,INT);'和'朋友矩陣運算部(INT,矩陣);' 。這樣既保持對稱又保持彼此相鄰。 – dyp

回答

3

mconst,所以只有const方法可以在它被調用。讓Matrix::operator*一個const成員函數:

Matrix operator*(int arg) const; 
1

你錯過了你的操作符重載聲明一個const

Matrix operator*(int arg) const;