Итак, у меня есть Shape.h, Rectangle.h, Circle.h и main.cpp.Как узнать, принадлежит ли объект классу x?
Shape.h получил:
class Shape{
public:
Shape() {};
~Shape() { cout << "Destroy Shape."; };
virtual double getArea() = 0;
virtual double getCircumference() = 0;
};
Прямоугольник и круг их соответствующий код.
Сейчас в main.cpp я
Shape* newRectangle= new Rectangle(4, 8);
Shape* newCircle= new Circle(10);
Все хорошо и денди до сих пор. Вот где я в тупике. Я знаю, что мне нужно делать, я просто не знаю, КАК это сделать.
Я пытаюсь написать функцию, которая проверяет, принадлежит ли Shape * Object Circle или нет.
Это идет что-то вроде этого
if Shape* object belongs to Object-Type Circle, then
cout << "It's a Circle, bruh!";
else
cout << "Ain't a circle, yo!";
я начал после того, как прибегая к помощи с этим:
void check(Shape & object){
Circle& checkObject = dynamic_cast<Circle&>(object);
}
Функция в основном будет вызываться через:
check(*newRectangle);
check(*newCircle);
Но я гавань» У меня есть ключ к пониманию того, как продолжать :(Любая помощь и объяснение приветствуются. Спасибо!
попробовать http://stackoverflow.com/questions/500493/c-equivalent-of-instanceof – Gordon
сделать класс 'Shape' полиморфные. Это означает, что у него есть хотя бы одна виртуальная функция. Обычно деструктор становится виртуальным. Затем вы можете использовать функциональность C++ RTTI, 'typeid' и' dynamic_cast'. –
Сделайте '~ Shape()' 'virtual'. Это гарантирует 'delete shp;' удаляет весь класс – mksteve