Несоответствие типов
От: Случай  
Дата: 14.02.05 17:03
Оценка:
Имеется следующий код
...
extern void CreateTrellis(int nOut, mxArray *pOut[],
              int nIn, const mxArray *pIn[]);
...
mxArray *Pol2Trel[2];
Pol2Trel[0] = K_mx;
Pol2Trel[1] = Gen_mx;
mxArray *Trellis[1];

CreateTrellis(1, Trellis, 2, Pol2Trel);
...

где mxArray — некая структура.
При компиляции выдается ошибка

error C2664: 'CreateTrellis' : cannot convert parameter 4 from 'struct mxArray_tag *[2]' to 'const struct mxArray_tag *[]'
Conversion loses qualifiers


Как правильно вызвать функцию 'CreateTrellis'?
Re: Несоответствие типов
От: ABK Украина  
Дата: 14.02.05 17:56
Оценка: 2 (1)
Здравствуйте, Случай, Вы писали:

С>Имеется следующий код

С>
С>...
С>extern void CreateTrellis(int nOut, mxArray *pOut[],
С>              int nIn, const mxArray *pIn[]);
С>...
С>mxArray *Pol2Trel[2];
С>Pol2Trel[0] = K_mx;
С>Pol2Trel[1] = Gen_mx;
С>mxArray *Trellis[1];

С>CreateTrellis(1, Trellis, 2, Pol2Trel);
С>...
С>

С>где mxArray — некая структура.
С>При компиляции выдается ошибка

С>

С>error C2664: 'CreateTrellis' : cannot convert parameter 4 from 'struct mxArray_tag *[2]' to 'const struct mxArray_tag *[]'
С> Conversion loses qualifiers


С>Как правильно вызвать функцию 'CreateTrellis'?



Просто:

С>extern void CreateTrellis(int nOut, mxArray *pOut[],
С>              int nIn, const mxArray *pIn[]);
С>...
С>const mxArray *Pol2Trel[2];
С>Pol2Trel[0] = K_mx;
С>Pol2Trel[1] = Gen_mx;
С>mxArray *Trellis[1];

С>CreateTrellis(1, Trellis, 2, Pol2Trel);


или убрать const из определения функции
extern void CreateTrellis(int nOut, mxArray *pOut[], int nIn, mxArray *pIn[]);
Re[2]: Несоответствие типов
От: newman2 Украина  
Дата: 14.02.05 18:04
Оценка:
либо напсать масив указателей на константы:
extern void CreateTrellis(int nOut, mxArray *pOut[], int nIn, mxArray * const pIn[])
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.