0

名前、色、およびそれらに関するいくつかの統計のリストを含むファイルがあります。例えば:

John black 10 15 
Adam black 19 18 
Jake brown 13 51 56 62 
Rich brown 13 09 98 84

それらの名前、色、番号を、それぞれの色に基づいてそれぞれのオブジェクトに保存できるようにしたいと思います。したがって、ジョンとアダムはクラスブラックに格納され、ジェイクとリッチはクラスブラウンに格納されます。

タイプが異なるため、各人をそれぞれのオブジェクトに保存するにはどうすればよいですか?

class Color{
  public:
    Color(string FIRST, string COLOR);
  protected:
    string FirstName;
    string ColorType;

};

class Black : public Color{
  public:
    Black(string FIRST, string COLOR, int A, int B); 
  private:
    string FirstName;
    string ColorType;
    int number1, number2;
};

class Brown : public Color{
  public:
    Brown(string FIRST, string COLOR, int A, int B, int C, int D); 
  private:
    string FirstName;
    string ColorType;
    int number1, number2, number3, number4;
};
4

2 に答える 2

6

基本クラスポインタのコンテナを作成します。

std::vector<std::unique_ptr<Color>> colors;

割り当てられた派生クラスを挿入します。

colors.emplace_back(new Black("John", "Black", 10, 15));
于 2012-07-01T20:30:26.940 に答える
0

通常、基本タイプへのポインターのリストがあり、派生タイプのインスタンスを作成します。C ++ 11でそれを行う方法については、Daveの回答を参照してください。古いバージョンのC++の場合、通常、カラーデストラクタを仮想化し、メモリを管理するためのラッパーを作成するか、ブーストを使用します。

于 2012-07-01T20:28:09.283 に答える