我从下面的代码中得到了下面的编译器错误。
cube.cpp:94: error: no matching function for call to 'Animation::animate(CUBE_ARRAY&, uint8_t&, uint8_t&, CUBE_STATE&)'
animation.h:28: note: candidates are: virtual uint8_t Animation::animate(CUBE_ARRAY*, uint8_t, uint8_t, CUBE_STATE)
有一个类Animation
,其中包含一个方法:
28 virtual uint8_t animate(CUBE_ARRAY *arrayP, uint8_t transIn, uint8_t transOut, CUBE_STATE startState);
该行正在调用:
94 animationComplete = animationPointer -> animate(cubeArray, transIn, transOut, state);
animationPointer
设置为指向继承自Raindrops
的{{1}}类的实例:
Animation
它的原始定义是:
animationPointer = &raindrops;
就我的(有限!)对指针的理解而言,这应该有效:Animation *animationPointer;
应该位于raindrops
指向的地址,而animationPointer
应该给出结果->
方法。所以我不确定编译器为什么看到调用通过引用传递参数。
令人困惑的是,我有非常相似的代码可以使用(我没有办法测试它,它是一个嵌入式应用程序,我将代码从一种MCU类型转换为另一种)。 / p>
答案 0 :(得分:4)
错误消息表明你应该这样做
animationComplete = animationPointer->animate(
&cubeArray, transIn, transOut, state);
请注意cubeArray
前面的&符号。