Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;使用从基类继承的另一个类的变量初始化函数继承_C++_Inheritance - Fatal编程技术网

C++ C++;使用从基类继承的另一个类的变量初始化函数继承

C++ C++;使用从基类继承的另一个类的变量初始化函数继承,c++,inheritance,C++,Inheritance,MergeSort遍历给定的向量,并通过Citizen基类中的fitness变量进行排序 我想在我的SGA类中使用它来对其SCitizen(它继承了fitness变量?)执行相同的操作;但是我不能,因为函数要求公民类型 是否不能对同一个函数使用派生类,因为该函数只使用所有类都将具有的基类的成员?还是我在课程设置上遗漏了什么 谢谢你的帮助! 对不起,如果这是重复;我在这里搜索了一下,在谷歌上搜索了一下,但什么也没找到——我甚至不知道该用谷歌搜索什么 class Citizen { public:

MergeSort遍历给定的向量,并通过Citizen基类中的fitness变量进行排序

我想在我的SGA类中使用它来对其SCitizen(它继承了fitness变量?)执行相同的操作;但是我不能,因为函数要求公民类型

是否不能对同一个函数使用派生类,因为该函数只使用所有类都将具有的基类的成员?还是我在课程设置上遗漏了什么

谢谢你的帮助! 对不起,如果这是重复;我在这里搜索了一下,在谷歌上搜索了一下,但什么也没找到——我甚至不知道该用谷歌搜索什么

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();
};
阶级公民
{
公众:
双重健身;
公民();
};
科学类:公众公民
{
公众:
std::字符串代码;
SCitizen();
};
GA类
{
公众:
性病:病媒*公民;
无效合并排序(标准::向量*列表);
};
SGA类:公共GA
{
公众:
std::载体*科学化;
void FitnessSort();
};

要使
向量
存储
公民
值及其所有子类型,您需要使用
向量
vector
只能存储
Citizen
值,并将切掉所使用的任何子类型

要使
向量
存储
公民
值及其所有子类型,您需要使用
向量
vector
只能存储
Citizen
值,并将切掉所使用的任何子类型

根据您的FitnessSort实现,无法在SCitizen类中向Citizen提供强制转换?FitnessSort只调用MergeSort和sCitizens(导致我的问题)。然后,MergeSort将根据Citizen基类中的fitness变量对该列表进行排序;但是我也需要SCitizen中的关联变量..根据您的FitnessSort实现,无法在SCitizen类中向Citizen提供强制转换?FitnessSort只调用MergeSort与SCitizen(导致我的问题)。然后,MergeSort将根据Citizen基类中的fitness变量对该列表进行排序;但是我也需要来自SCitizen的相关变量..谢谢你的回复;我像这样重写了MergeSort:
MergeSort(std::vector*list)
void FitnessSort()发送SCitizen(现在是std::vector),但我收到了这个错误:无法使用SCitizen*和Citizen*将参数1从“std::vector*”转换为“std::vector*”,谢谢您的回复;我像这样重写了MergeSort:
MergeSort(std::vector*list)
void FitnessSort()发送SCitizen(现在是std::vector),但我收到了以下错误:无法使用SCitizen*和Citizen将参数1从“std::vector*”转换为“std::vector*”*