2013-05-12 32 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