Наследование функций класса C ++ с использованием переменной другого класса, унаследованного от базового класса - PullRequest
1 голос
/ 26 марта 2012

MergeSort проходит через заданный им вектор и сортирует его по переменной пригодности в моем базовом классе Citizen.

Я хочу использовать это в своем классе SGA, чтобы сделать то же самое со своим SCitizen (который наследует пригодностьпеременная);но я не могу этого сделать, так как функция запрашивает тип Citizen.

Разве невозможно использовать производный класс для той же функции, поскольку функция использует только члены базового класса, которые будут иметь все классы?Или я что-то пропустил в настройке классов?

Спасибо за любую помощь!Извините, если это повторяется;У меня был поиск здесь и Google, но ничего не нашел - я даже не был особенно уверен, что 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();
};

1 Ответ

1 голос
/ 26 марта 2012

Чтобы vector<T> сохранил значения Citizen и все его подтипы, вам необходимо использовать vector<Citizen*>. vector<Citizen> может хранить только значения Citizen и исключает любые используемые подтипы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...