2014-09-02 91 views
0

說我有一個類General,它包含一個指向抽象類* _abstract的指針。 如果我想實現通用拷貝構造函數,它是如何完成的?複製構造函數複製指針到抽象類

我嘗試這一點,但它失敗:

General::General(const General &other) 
{ 
    *_abstract = *other._abstract; 
} 

我也試過:

General::General(const General &other) 
{ 
    *_abstract = new Abstract(); 
    *_abstract = *other._abstract; 
} 

因爲抽象類初始化這是不可能的(無構造函數)

回答

1

如果您需要深層複製抽象類,然後將虛擬克隆函數添加到抽象類並將其複製。

understanding virtual copy constructors

+0

我發現這個鏈接給出了你說的一個例子,謝謝! http://www.parashift.com/c++-faq/copy-of-abc-via-clone.html – 2014-09-03 04:46:26