2010-05-22 149 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类。