C++ Don';我不理解为什么会出现此错误:成员引用基类型';形状*';不是一个结构或联盟

C++ Don';我不理解为什么会出现此错误:成员引用基类型';形状*';不是一个结构或联盟,c++,C++,我一直在阅读这本关于游戏引擎的书,下面是代码示例。我相信我已经正确地设置了省略的代码(我只需要包括list和main()),这样它就可以编译了 我得到一个错误,说成员引用基类型“Shape*”不是结构或联合,我查过这个错误的含义,但我发现的每个问题都有不同类型的答案。我从书中逐字逐句地抄袭了它,我有点困惑为什么我会得到这个。这是一张照片 任何见解都会有帮助 编辑:书中的代码和我的代码之间唯一的区别(除了为了使其可运行而省略的代码)是在迭代器上执行每个纯虚拟函数后添加覆盖,迭代器返回Shape*,

我一直在阅读这本关于游戏引擎的书,下面是代码示例。我相信我已经正确地设置了省略的代码(我只需要包括list和main()),这样它就可以编译了

我得到一个错误,说成员引用基类型“Shape*”不是结构或联合,我查过这个错误的含义,但我发现的每个问题都有不同类型的答案。我从书中逐字逐句地抄袭了它,我有点困惑为什么我会得到这个。这是一张照片

任何见解都会有帮助


编辑:书中的代码和我的代码之间唯一的区别(除了为了使其可运行而省略的代码)是在迭代器上执行每个纯虚拟函数后添加覆盖,迭代器返回
Shape*
,然后尝试访问指针的
Draw()
成员函数。指针没有成员函数,因此失败。您必须首先取消对迭代器的引用,然后对返回的指针调用
->
运算符:

(*pShape)->Draw();
// Same thing as:
// Shape* ptr = *pShape;
// ptr->Draw();

发布您的代码,而不是代码截图请发布代码本身。这很有帮助。尝试
(*pShape)->Draw()
也可以显示您正在初始化的位置object@Waqar很抱歉,这是我第一次发帖!谢谢我忘了我必须在括号里放一个取消引用的指针太好了@vll给出了一个很好的答案。如果它解决了你的问题,请接受答案:)顺便说一句,我喜欢你的配色方案,介意分享一下这个配色方案的名称吗?@Waqar这是我的Macbook Xcode上默认的黑色主题谢谢!我最初有*pShape->Draw(),但忘记了->优先于*并且没有把它放在括号中。