【发布时间】:2017-06-12 20:34:41
【问题描述】:
我正在制作一个模拟考试的项目,我遇到了这个问题。我有一个基类“任务”和 3 个“任务”类的继承类。然后在新的类任务集合中,我必须创建一个数组,我将从“任务”中放置所有 3 个继承类的对象。另外,所有都必须在任务集合类中完成,而不是在主函数中。
代码如下:
class Task
{
public:
string contents;
};
class Task4Answ : public Task
{
public:
string a,b,c,d;
Task4Answ(string contents1,string a1,string b1,string c1,string d1)
{
contents=contents1;
a=a1;
b=b1;
c=c1;
d=d1;
}
};
class TaskNumber : public Task
{
public:
int right;
TaskNumber(string contents1, int pop)
{
contents=contents1;
right=pop;
}
};
class TaskString : public Task
{
private:;
string poprawna;
public:
ZadanieNumer(string tresc1,string pop)
{
contents=contents1;
poprawna=pop;
}
};
class TaskCollection
{
// Here i need to make an array which contains the objects of 3 classes, and method which will put them into array
};
【问题讨论】:
-
std::vector<std::unique_ptr<Task>>? (并且可能是启用dynamic_cast的虚拟析构函数)(或variant而不是继承)。 -
哦,这对我来说有点难,有没有可能我可以用更简单的方式使用基类 Task?
-
你想用你的收藏做什么?
-
我想从中抽取任务的随机测试,从用户那里得到答案,并检查它们是否正确。
-
@DarekD -- 哦,这对我来说有点难 -- 在某些时候你需要学习 C++。
std::vector<Task*>或std::array<Task*, 3>并从那里毕业以使用std::vector<std::unique_ptr<Task>>或std::array<std::unique_ptr<Task>,3>。