C ++ - 没有用于调用<class method =“”> </class>的匹配函数

时间:2014-07-31 23:58:35

标签: c++ pointers compiler-errors member-function-pointers

我从下面的代码中得到了下面的编译器错误。

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>

1 个答案:

答案 0 :(得分:4)

错误消息表明你应该这样做

animationComplete = animationPointer->animate(
    &cubeArray, transIn, transOut, state);

请注意cubeArray前面的&符号。