#include <iostream>
class BarParent
{
virtual void fuz()
{
std::cout << "BarParent" << std::endl;
}
};
class BarChild : public BarParent
{
virtual void fuz()
{
std::cout << "BarChild" << std::endl;
}
};
class Foo
{
// ??BarParent bar;??
public:
Foo(BarParent bar);
};
我追求的是存儲副本BarParent
傳遞給構造函數,讓它駐留在Foo
,同時還調用正確的virtual function
居住父類類型的成員在另一個類中
這是一個嵌入式應用程序:使用堆是皺眉。所以最好不堆
摘要:據所知,它不能做,監守的slicing problem的(長話短說編譯器不能確定複製它的類型轉換的通用Bar
等大小),所以不能實現多態性。使用模板可能是一個好主意,但是,它定義了多個class
es Foo<typename BarType>
,因此,執行function
(如changeBar(BarParent)
)將不可能,因爲編譯器會將其定義爲僅爲類Foo<Bartype>
定義的changeBar(BarType)
。如果有人有更好的主意,請告訴我。我想我將不得不去堆,或const Barparent
和指針。如果用戶const_cast
的話,那他是在惹麻煩,不是我的錯!
它必須是一個副本,所以需要一個指針來代替。 – chris
@chris ah yes .. –
但是,對象BarParent可以在更高範圍內的其他別名下編輯。我不想那樣。我需要__copy__它 – aiao