2

我在动态库中有一个带有公共函数的类:

void setActiveAnimation(std::shared_ptr<MaJR::Animation> anim);

当我尝试这样称呼它时:

    MaJR::Actor actor;
    actor.setActiveAnimation(idleAnimation);

我得到以下信息:

/home/mike/NixCraft/main.cpp||In function 'int main()':|
/home/mike/NixCraft/main.cpp|12|error: no matching function for call to 'MaJR::Actor::setActiveAnimation(MaJR::Animation&)'|
/home/mike/NixCraft/main.cpp|12|note: candidate is:|
/usr/include/MaJR/Actor.hpp|16|note: void MaJR::Actor::setActiveAnimation(std::shared_ptr<MaJR::Animation>)|
/usr/include/MaJR/Actor.hpp|16|note:   no known conversion for argument 1 from 'MaJR::Animation' to 'std::shared_ptr<MaJR::Animation>'|
||=== Build finished: 4 errors, 0 warnings ===|

我应该怎么办?

4

2 回答 2

5

该错误清楚地表明您正在尝试使用对MaJR::Animation而不是a 的引用来调用该函数std::shared_ptr<MaJR::Animation>。每当您声明idleAnimation时,您应该改为:

std::shared_ptr<MaJR::Animation> idleAnimation( new MaJR::Animation() );

或者更好:

std::shared_ptr<MaJR::Animation> idleAnimation = std::make_shared<MaJR::Animation>();
于 2012-06-09T00:04:39.477 回答
1

我看不到您是如何定义“idleAnimation”的,但我猜它不是指针,而是对实际对象的引用。setActiveAnimation() 需要一个指针,因此请相应地调整您的代码。

于 2012-06-09T00:05:16.337 回答