Как сделать 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;
}

Ответы (0 шт):