2013-05-12 78 views
3

你好,我想在左邊乘一個數字矩陣,例如:N = a * M其中a是數字。「基本」類的運算符重載

如果我想在右邊乘,我會簡單地重載我的矩陣類中的運算符*。 但是在這種情況下我應該怎麼做?我是否可以重載float的操作符*,即使它是「默認」類? (我甚至不知道它是一個類)

回答

3

你將不得不定義函數的另一方面。例如:

Matrix operator *(float x, Matrix const& m) 
{ 
    return m * x; 
} 
+0

所以我可以重載操作者的類定義之外?那很棒 ! – user2370139 2013-05-12 18:21:34

+1

@ user2370139是的,這是一個全球運營商的定義。但是至少有一個操作數必須是類類型的。 – 0x499602D2 2013-05-12 18:23:06

+0

不應該返回值應該是矩陣嗎? – shivakumar 2013-05-12 18:29:35

0

重載*運算符在乘以常數後返回矩陣。

matrix matrix :: operator* (int a) 
{ 
    matrix temp(x, y); 
    int num,num1, num2; 
    A = new int *[temp.x]; 
    for (num=0; num<=temp.x; num++) 
    { 
     A[num] = new int [temp.y]; 
    } 
     for (num1=0; num1<temp.x; num1++) 
    { 
     for (num2=0; num2<temp.y; num2++) 
     { 
      temp.A[num1][num2] = 0; 
     } 
    } 
    int i, j; 
    for (i = 0; i < x; i++) 
    { 
     for (j = 0; j < y; j++) 

     { 

      temp.A[i][j] = a * A[i][j]; 
     } 
    } 
    return (temp); 
} 

參考這個例子matrix multiply by number

+0

這不是他要求的。他想要聯想算術。 – 0x499602D2 2013-05-12 18:32:05