MergeSort 遍历给定的 vector ,并通过我的 Citizen 基类中的适应度变量进行排序。
我想在我的 SGA 类中使用它来对其 SCitizen 做同样的事情(它继承了适应度变量?);但我不能,因为该函数请求 Citizen 类型。
是否不能对同一个函数使用派生类,因为该函数只使用所有类都将具有的基类的成员?还是我错过了类(class)设置中的某些内容?
感谢您的帮助! 对不起,如果这是重复的;我在此处和谷歌上进行了搜索,但一无所获 - 我什至不确定要用谷歌搜索什么......
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();
};
最佳答案
为了 vector<T>
存储Citizen
值及其所有子类型,您需要使用 vector<Citizen*>
. vector<Citizen>
只能存储Citizen
值并将切掉任何使用的子类型。
关于C++类函数继承使用从基类继承的另一个类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873977/