比方說,我有一個包含類類型「XX」 STL的載體。 xx是抽象的。我遇到了這個問題,其中編譯器不會讓我「實例」當我這樣做如下:STL vector.push_back()抽象類不會編譯
std::vector<xx> victor;
void pusher(xx& thing)
{
victor.push_back(thing);
}
void main()
{
;
}
我想這是因爲拷貝構造函數必須被調用。我通過在向量中存儲xx *而不是xx來解決這個問題。有更好的解決方案嗎?它是什麼?
但*不*使用std :: auto_ptr。由於其奇怪的複製語義,這些不能放入STL容器。 – 2009-08-10 18:27:24
你也可以使用升壓轉換器的ptr_vector - http://www.boost.org/doc/libs/1_39_0/libs/ptr_container/doc/ptr_container.html – bdonlan 2009-08-10 18:30:02
只是爲了澄清,使用你基本上覆制XX的狀態STL向量時然後當你檢索它時,C++將首先實例化xx,然後用適當的屬性填充它?而不是指向舊的對象。所以整個問題是我們最終使用xx的構造函數? – Ori 2009-08-10 19:51:40