const float * говорит о том, что переменную, на которую указывает такой указатель менять нельзя. И компилятор понимает, что в месте, где вызвана эта функция, переменная не будет изменена. Вы же пытаетесь присвоить этот указатель обычному float *, который разрешает модифицировать переменную. Вам надо либо объявить paramcpy тоже как const float*, либо при присвоении делать явное (принудительное) приведение типа: paramcpy = (float *)param1; Но в этом случае возможны подводные камни, ибо компилятор может перед вызовом функции сохранить значение по указателю в регистрах (поскольку уверен, что оно не изменяется) и после выхода из функции использовать сохраненное значение. Значит, вы либо действуете честно - не меняете значение по указателю и, значит, можете смело объявить paramcpy как const float *, либо, если значение по указателю должно изменяться, не имеете права объявлять параметр как const float *, а должны его объявлять как float *. Раз тип параметра менять нельзя, значит нельзя и менять значение, на которое он указывает.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|