Как сделать vector типа любого класса, который наследуется от абстрактного класса?
У меня есть абстрактный класс IReader
#ifndef GAME_IREADER_H
#define GAME_IREADER_H
class Wall;
class IReader{
virtual std::vector<Wall> Read() = 0;
};
#endif //GAME_IREADER_H
Есть класс Wall, я хочу чтобы у меня vector в IReader был типа не Wall, а мог бы принимать значения любого класса, который наследуется от IReader
То есть в классе IReader
virtual std::vector<?> Read() = 0;
а в Wall.h, я мог бы написать так:
#ifndef GAME_WALL_H
#define GAME_WALL_H
#include "IReader.h"
class Wall : IReader {
private:
int x;
int y;
public:
std::vector<класс_наследник_от_IReader> Read() override;
int getX() const;
int getY() const;
};
#endif //GAME_WALL_H
так же и в Wall.cpp
#include <vector>
#include "Wall.h"
std::vector<класс_наследник_от_IReader> Wall::Read() {
std::vector<Wall> Walls;
return Walls;
}
int Wall::getX() const {
return x;
}
int Wall::getY() const {
return y;
}