2012-03-26 67 views
1

MergeSort运行给定它的向量,并通过我的Citizen基类中的适应性变量进行排序。使用从基类继承的另一个类的变量的C++类函数继承

我想在我的SGA类中使用它来完成它的SCitizen(它继承了适应性变量?)。但是我无法像这个功能请求一个Citizen类型。

对于相同的函数是不可能使用派生类,因为该函数只使用所有类将具有的基类成员?或者我在课堂设置中错过了什么?

感谢您的帮助! 对不起,如果这是重复;我对这里的搜索和谷歌,但什么也没有想出了 - 我甚至不特别肯定google一下..

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

根据您的FitnessSort的实施情况,无法向SCitizen课程中的Citizen提供剧集? – 2012-03-26 14:37:51

+0

FitnessSort只是用sCitizens调用MergeSort(导致我的问题)。 然后,MergeSort将根据Citizen基类中的适应变量对此列表进行排序;但我也需要SCitizen的相关变量.. – user1293210 2012-03-26 15:48:59

回答

1

为了使vector<T>存储Citizen价值和它的所有子类型你需要使用一个vector<Citizen*>。 A vector<Citizen>只能存储Citizen值,并将切断使用的任何子类型。

+0

感谢您的回应;我重写MergeSort是这样的:'MergeSort(std :: vector * list)'和'void voidSort();'发送sCitizens(现在是std :: vector )但我收到这个错误:无法转换参数1从'std :: vector <_Ty> *'改为'std :: vector <_Ty> *'与SCitizen *和Citizen * – user1293210 2012-03-26 15:55:31