想象的情況下,我有一些類:C++的指針轉換爲類到一個類
class MyClass{
public:
MyClass(unsigned int N): a(new double[N]){};
~MyClass(){delete[] a;};
private:
double* a;
}
在另一類,我使用一個指向這個類:
class MyOtherClass{
public:
MyOtherClass(unsigned int N):p(new MyClass(N)){};
~MyOtherClass(){delete p;};
MyClass* get_MyClass(){return p;};
private:
MyClass *p;
}
然後在主,我需要獲得MyClass的載於MyOtherClass
int main(){
MyOtherClass moc(1e100);
MyClass mc;
mc <-> moc.get_MyClass();
}
的<->
就是我卡住了。我希望mc
成爲p指向但不復制(巨大)靜態數組。有沒有辦法有效地進行這種轉換?
編輯
謝謝您的回答,但我會精確的事情。作爲消費MyClass的副本時部來自於靜態數組的副本,我以爲我可以這樣做:
class MyClass{
public:
MyClass(unsigned int N): a(new double[N]),del(true){};
MyClass(MyClass* mc): a(mc.get_a()),del(true){};
~MyClass(){if(del){delete[] a;}};
double* get_a(){
del = false;
return a;
}
private:
double* a;
bool del;
}
與主:
int main(){
MyOtherClass moc(1e100);
MyClass mc(moc.get_MyClass());
}
,但我不知道我是否有內存泄漏...
感謝,但我必須使用靜態數組...我使用的代碼已經開發了別人,我不能承受一切的重寫。 ..但是,是的,我想要的是「竊取」數據... – PinkFloyd