2014-12-19 766 views
0

我似乎在我的代碼中得到這個錯誤,當我將鼠標懸停在說'數據'的位上時,它說'錯誤:'*'的操作數必須是一個指針」。任何人都可以看到問題出在哪裏。錯誤:'*'的操作數必須是一個指針

double* Matrix::get(int i, int j) const 
    { 
     return *data[i*N + j]; 
    } 
+1

這是什麼'data'?而你爲什麼試圖返回指向'double'的指針,而不是'double'? – 2014-12-19 11:54:19

+0

數據是來自我的矩陣(數組)的信息 – MyNamesJeff 2014-12-19 11:55:02

+0

您是否想要返回數組元素的地址?這是'&'而不是'*'。 – 2014-12-19 11:55:20

回答

2

假設data是一個數組的成員變量,你需要說的是:

return &data[i*N + j]; 

此外,由於你的函數是const你應該返回一個const指針:

const double *Matrix::get(int i, int j) const 
{ 
    return &data[i*N + j]; 
} 

如果您不想讓來電者修改陣列中的值,請將其更改爲:

double Matrix::get(int i, int j) const 
{ 
    return data[i*N + j]; 
} 
+0

'data + i * N + j'應該等於'&data [i * N + j]'(當然假設'data'是數組,原始指針或類似它們的東西)。 – GingerPlusPlus 2014-12-19 12:03:59

0

如果data是雙數組,然後擺脫*的,因爲你並不需要返回的內存地址:

double Matrix::get(int i, int j) const 
{ 
    return data[i*N + j]; 
} 
相關問題