私は、オブジェクトとオブジェクトのコレクションが同じように動作する場合があります。だから私は、クラスをしたオブジェクトを表すために:構図と継承を一緒に使うにはどうすればいいですか?
class A {
public:
virtual void foo();
protected:
int x;
};
そしてオブジェクトのコレクションを表すために、私は別のクラスをしました:
class Collection: public A {
void foo(); //override base class function
private:
vector<A*> aList;
}
これは罰金ですが、問題はそのコレクションクラスです私が必要としないA :: xのコピーを持っています。私はクラスコレクションがデータメンバーを継承しないようにしたい。これをどのように達成するのですか?
注:ライブラリからのものであるため、「クラスA」は編集できません。 修正:私はAのインターフェースを変更することができません。Aは残りのコードで使用されています。私は実装を変更することができます。既に仮想ではない場合、A :: anyFunction()をvirtualに変更できます。プライベートメンバーを保護対象に変更することができます。
を 'コレクション:: x'と 'A :: x'は同じ' x'です。 – LogicStuff
私はそれを理解しています。しかし、コレクションクラスでそのデータメンバーを望んでいません。 –
多形Aを期待する関数を編集できますか? – StoryTeller