MergeSort运行给定的向量,并通过我的Citizen基类中的适应变量进行排序。
我想在我的SGA类中使用它来对它的SCitizen(继承健身变量?)做同样的事情;但我无法将该功能请求公民类型。
是否不能将派生类用于同一个函数,因为该函数只使用所有类所具有的基类成员?或者我在课程设置中遗漏了什么?
感谢您的帮助! 对不起,如果这是重复;我在这里搜索了一个谷歌,但没有得到任何东西 - 我甚至不太确定要谷歌...
class Citizen
{
public:
double fitness;
Citizen();
};
class SCitizen : public Citizen
{
public:
std::string code;
SCitizen();
};
class GA
{
public:
std::vector<Citizen>* citizens;
void MergeSort(std::vector<Citizen>* list);
};
class SGA : public GA
{
public:
std::vector<SCitizen>* sCitizens;
void FitnessSort();
};
答案 0 :(得分:1)
要使vector<T>
存储Citizen
值及其所有子类型,您需要使用vector<Citizen*>
。 vector<Citizen>
只能存储Citizen
值,并会截断所使用的任何子类型。