У меня есть класс, определенный как это:Getting класс ребенок определяется как родительский класс для вывода функции ребенка
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
class Shape {
protected:
float width, height;
public:
virtual ~Shape(){}
void set_data (float a, float b){
width = a;
height = b;
}
virtual string getType() {
return "Shapes";
}
};
class Polygon: public Shape {
public:
virtual ~Polygon(){};
virtual string getType() {
return "Polygon";
}
};
class Triangle: public Polygon {
public:
virtual ~Triangle(){};
virtual string getType() {
return "Triangle";
}
};
И я хочу, чтобы получить программу, которая использует этот класс
int main() {
Shape poly = Polygon();
Shape tri = Triangle();
std::cout << poly.getType() << std::endl;
std::cout << tri.getType() << std::endl;
return 0;
}
Есть ли способ получить poly.getType()
для распечатки Polygon
, например? Сейчас он печатает Shapes
. Я знаю, что если бы я сделал
Polygon poly = Polygon()
, что делает трюк, но я хочу, чтобы хранить poly
как Shape
объекта, построить его с помощью Polygon
конструктора, и убедитесь, что
poly.getType()
возвращается Polygon
, не Shapes
,
Да, это сработало! Спасибо всем, кто ответил! – ndb
Убедитесь, что вы прочитали документы на 'unique_ptr', хотя, если вы решите использовать его. – Bathsheba