我知道虛擬類,他們不能被實例化,現在我有一個關於一個關於它的情況下的問題,假設我們有一個純粹的抽象類象下面這樣:如何在其他類(或任何類)中使用抽象類?
class Color{
public:
Color();
virtual string getName()=0;
~Color();
};
和2類繼承的形式,它:
class Blue:public Color
{
public:
Blue();
~Blue();
string getName();
};
class Red:public Color{
public:
Red();
~Red();
string getName();
};
和第三類要使用Color
類作爲其構造函數的參數和數據成員:
class Foo{
public:
Foo();
Foo(Color&);
~Foo();
void draw(Color&);
private:
Color* co;
};
及其實施:
Foo::Foo():co(new Color()){
}
Foo::Foo(Color &c):co(new Color(c)){
}
現在,我知道這部分new Color()
和new Color(c)
是錯誤在這種情況下,但我只想用一個類型Color
傳遞給Foo
而不是直接使用Blue
或Red
作爲參數。
什麼是解決方案?我必須使用重載或其他東西嗎?和方法draw
我有什麼問題嗎? 和我讀了約設計模式,這是否幫助我對這種情況?
tnx您的回覆。
在默認構造函數中將'co'初始化爲空指針? –
@Joachim Pileborg不,我沒有使用。 – mehdi