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