gpt4 book ai didi

c++ - 我如何询问一个对象是否属于类 x?

转载 作者:太空狗 更新时间:2023-10-29 23:39:37 27 4
gpt4 key购买 nike

所以我有 Shape.h、Rectangle.h、Circle.h 和 main.cpp。

Shape.h 得到:

class Shape{
public:
Shape() {};
~Shape() { cout << "Destroy Shape."; };

virtual double getArea() = 0;
virtual double getCircumference() = 0;
};

Rectangle 和 Circle 各自的代码。

现在在 main.cpp 中我做

Shape* newRectangle= new Rectangle(4, 8);
Shape* newCircle= new Circle(10);

到目前为止一切都很好。这就是我难住的地方。我知道我必须做什么,只是不知道该怎么做。

我正在尝试编写一个函数来检查 Shape* 对象是否属于 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);

}

main 中的函数将通过以下方式调用:

check(*newRectangle);
check(*newCircle);

但我不知道如何继续:(。感谢任何帮助和解释。谢谢!

最佳答案

  1. 尽量避免基于派生类型的逻辑。尽可能使用虚拟成员函数。

    class Shape {
    public:
    virtual void print(std::ostream& out) const = 0;
    ...
    };

    并在派生类中实现函数。

    class Circle : public Shape {
    public:
    virtual void print(std::ostream& out) const
    {
    out << "Got a Circle.\n";
    }

    ....
    };
  2. 如果您无法使用 virtual 成员函数解决问题,则需要求助于 dynamic_cast

    Shape* shapePtr = <some pointer>;
    Circle* circlePtr = dynamic_cast<Circle*>(shapePtr);
    if ( circlePtr ) {
    // Access Circle functionality.
    }

关于c++ - 我如何询问一个对象是否属于类 x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32768290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com