В C ++ у меня есть массив указателей на объекты Player, и я хочу заполнить его объектами Fickle, где Fickle - это класс, производный от Player. Это потому, что мне нужен общий массив Player, который я могу заполнить различными объектами из разных классов, все они являются производными от класса Player.
Как я могу это сделать?
Я создаю массив указателей на объекты Player
Player ** playerArray;
Затем инициализируйте массив до определенного размера
playerArray = new Player *[numPlayersIn];
Но тогда по какой-то причине следующее не работает:
playerArray[i] = new Fickle(0);
Как я могу заполнить playerArray объектами Fickle (Fickel - это класс, производный от Player)?
Спасибо.
UPDATE:
Я получаю сообщение об ошибке (в Eclipse IDE):
expected ';' before 'Fickle'
Я думаю, что это может быть связано с определением Фикла.
Файл Fickle.hpp содержит:
#pragma once
#include "player.hpp";
class Fickle: public Player {
public:
// constructor
Fickle(int initChoice){
choice = initChoice;
}
}
Это нормально или есть проблема с этим?
Файл заголовка класса Player имеет:
class Player {
private:
public:
int getChoice();
int choice; // whether 0 or 1
virtual void receive(int otherChoice); // virtual means it can be overridden in subclases
};
Метод приема будет переопределен в Fickle и других классах, производных от класса Player
ОБНОВЛЕНИЕ 2:
ОК. Я думаю, что ошибка на самом деле из-за другой части кода.
Player определяет метод receive:
virtual void receive(int otherChoice);
Это должно быть отменено подклассом Fickle, но определением в Fickle:
void Fickle::receive(int otherChoice) {}
выдает ошибку:
no 'void Fickle::receive(int)' member function declared in class 'Fickle'
Но я не знаю, почему это происходит, потому что в классе Player определено получение?