2014-12-19 10 views
0

Я, кажется, получаю эту ошибку в своем коде, и когда я наводил курсор на бит, который говорит «данные», он говорит: «Ошибка: операнд« * »должен быть указателем ». Может ли кто-нибудь увидеть, где проблема.Ошибка: операнд '*' должен быть указателем

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

Что такое 'data'? И почему вы пытаетесь вернуть указатель на 'double', а не просто' double'? –

+0

данные - это информация, поступающая из моей матрицы (массив) – MyNamesJeff

+0

Вы хотите вернуть адрес элемента массива? Это '&' не '*'. –

ответ

2

Предполагая, что data является переменным членом массива, что вам нужно сказать:

return &data[i*N + j]; 

Кроме того, как ваша функция 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

0

Если data является массивом двойной, а затем избавиться от * потому, что вам не нужно возвращать адрес памяти:

double Matrix::get(int i, int j) const 
{ 
    return data[i*N + j]; 
} 
Смежные вопросы