1
我没有使用void *和const_correctness之前,所以我不明白我在做什么错在下面的代码。我只想将一个const对象的成员函数返回的void *转换为int *。请提出更好的方法。谢谢。铸造const void * const const *
我收到以下错误
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);
}
只有方法,如在这种情况下,“打印()”知道数据类型返回的实际程序通过'getData'。我无法使用模板,因为用户不知道MyClass是如何实现的。谢谢。随意建议替代品。
这里是你如何将一个void *转换为int * ...(int *)vp;完成。这就是说,为什么你用C++中的void *指针来解决这个问题呢?模板我的朋友,模板... – 2011-01-19 00:18:24
谢谢埃德。如何在这种情况下应用模板? – blueskin 2011-01-19 00:24:40