我有一个文件,其中包含名称,颜色和一些有关它们的统计信息列表。 例如:
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;
};
答案 0 :(得分:6)
创建一个基类指针的容器:
std::vector<std::unique_ptr<Color>> colors;
并插入已分配的派生类:
colors.emplace_back(new Black("John", "Black", 10, 15));
答案 1 :(得分:0)
通常,您将拥有一个指向基类型的指针列表,并创建派生类型的实例。请参阅Dave的答案,了解如何使用C ++ 11。对于旧版本的C ++,您通常会将Color析构函数设置为虚拟并创建一个包装器来管理内存,或者使用boost。