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