Я раньше не использовал void * и const_c корректность, поэтому я не понимаю, что я делаю неправильно в приведенном ниже коде Все, что я хочу, это привести void *, возвращенный функцией-членом объекта const, к int *. Пожалуйста, предложите лучшие подходы. Спасибо.
Я получаю следующую ошибку
passing 'const MyClass' as 'this' argument of 'void* MyClass::getArr()' discards qualifiers
Итак, вот реальная программа, с которой у меня была проблема
class MyClassImpl{
CvMat* arr;
public:
MyClassImpl(){arr = new CvMat[10];}
CvMat *getArr(){return arr;}
};
class MyClass{
MyClassImpl *d;
public:
const void *getArr()const{ return (void*)d->getArr(); }
};
void print(const MyClass& obj){
const int* ptr = static_cast<const int *>(obj.getArr());
}
int main(){
MyClass obj1;
print(obj1);
}
Только методы, такие как 'print ()', в этом случае знают тип данных, возвращаемый функцией 'getData'. Я не могу использовать шаблоны, потому что пользователь не знает, как реализован MyClass. Спасибо. Не стесняйтесь предлагать альтернативы.