2010-05-22 150 views
0

說我有Class1和Class2,我想要一個Class1的淺拷貝構造函數。 Class1有一個成員變量,它是一個指向Class2實例的指針。此外,我必須能夠改變Class2 ptr指向。傳遞一個類的指針

class Class1 
{ 
    Class2* ptr; 
    ... 
} 

在源文件:

在頭文件

Class1::Class1() 
{ 
    ptr = new Class2(); 
} 

...... 

Class2* Class1::Exchange(Class2* newClass2) 
{ 
    Class2* temp; 
    ptr = newClass2; 
    return temp; 
} 

...... 

現在說

Class1 original; 
Class1 shallowCopy(original); 

Class2* newClass2 = new Class2(); 
Class2* oldClass2; 

oldClass2 = orignal.Exchange(newClass2); 
delete oldClass2; 

現在我想的是聯想original.ptr與shallowCopy.ptr,當我實現淺拷貝構造函數,我如何確保這兩個指針總是指向相同的Class2?我的意思是在上面的類中,oldClass2被刪除,所以shallowCopy的ptr沒有指向任何東西。如果我不刪除oldClass2,則original和shallowCopy的ptrs指向不同的Class2實例。

回答

3

您可能想要查看使用引用計數來共享指針,特別是Boost中的shared_ptr類。