2015-01-07 86 views
0

我正在嘗試實現Matlab方法來訪問矩陣元素。舉例來說,如果我有MATLAB中的以下情況:如何在重載運算符中使用函數指針

>> A = [1 2; 3 4] 

A = 

1  2 
3  4 

>> A(1,1) = 5 

就會產生此輸出:

A = 

5  2 
3  4 

這是可能實現在C運營商()++?提前致謝。

@edit

對不起球員,我覺得決心將由函數指針來實現。

我試圖更簡單。我有一個類矩陣,我想使用operator()來更改類的相應值,將相應的行數傳遞給列。

+2

這與函數指針有什麼關係? – Brian

+0

沒有重載任何東西,你可以簡單地做'A [1] [1] = 5'。或者您可以使用許多現有的Matrix類中的一個(或者自己寫)並定義一個'()'操作符。 – CoryKramer

+1

OP可能仍然希望重載'operator()'來實現基於1的索引,如matlab。 – EyasSH

回答

2
template<size_t I, size_t J> 
class M 
{ 
    public: 
    M(double e00, ...) 
    { 
     // use arg_list :) 
    } 
    double& operator() (int i, int j) 
    { 
     return m[i-1][j-1]; 
    } 
    private: 
    double m[I][J]; 
}; 

M<2,2> A(1,2,3,4); 
A(1,1)=5.0; 
+0

謝謝你的回答,我試過你的主意,但我不能編譯代碼,我得到以下錯誤:「左值操作符的分配所需的左值」@edit我解決了問題,這是正確的,謝謝:) –