gpt4 book ai didi

c++ - 确定指向抽象类的指针设置为哪个派生类

转载 作者:行者123 更新时间:2023-11-27 23:23:14 25 4
gpt4 key购买 nike

我不确定我的问题措辞是否如我所愿,但我会举一个例子来澄清问题。

代码如下:

class Shape;
class Circle;
class Triangle;

class Shape
{
Shape(void);
~Shape(void);

virtual void DrawShape(void) = 0;
}

class Circle : public Shape
{
/* .... constructor/destructor defined normally .... */
bool TestIntersection(Triangle* _triangle);
bool TestIntersection(Circle* _circle);
void DrawShape(void);
}

/* main.cpp */

...
Shape* shape;
Shape* circle = new Circle;

if(a == 0)
{
shape = new Circle;
}
else
{
shape = new Triangle;
}

circle->TestIntersection(shape);

我得到的错误是没有可接受的从 Shape* 到 Circle* 或 Triangle* 的转换。

为什么会这样?或者我是否需要一种方法来确定哪个派生类已设置为抽象类指针?

最佳答案

你基本上需要的是:

我注意到您没有从Shape 派生应该 的派生类。也修复它。也就是说,TriangleCircle 应该派生自 Shape。之后,阅读访问者模式及其各种实现和用法。这将帮助您解决问题。

关于c++ - 确定指向抽象类的指针设置为哪个派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11343464/

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