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エラーは、の代わりにへの参照を使用して関数を呼び出そうとしていることを明確に示しています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 に答える