2012-03-26 69 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