0

我有一个文件,其中包含名称、颜色和一些关于它们的统计信息的列表。例如:

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

我希望能够根据颜色将这些名称、颜色和数字存储在它们各自的对象中。所以 John 和 Adam 将被存储在 Black 类中,Jake 和 Rich 将被存储在 Brown 类中。

由于他们是不同的类型,我如何将每个人存储在他们各自的对象中?

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

通常,您将拥有一个指向基类型的指针列表,并创建派生类型的实例。请参阅 Dave 的回答以了解如何使用 C++11 进行操作。对于旧版本的 C++,您通常会将 Color 析构函数设为虚拟并创建一个包装器来管理内存,或者可能使用 boost。

于 2012-07-01T20:28:09.283 回答