没有匹配函数来调用"AnimationSet::AnimationSet()"

No matching function for call to 'AnimationSet::AnimationSet()'

本文关键字:AnimationSet 调用 函数      更新时间:2023-10-16

我只是在做我的DrawObject构造函数,并不断遇到这个错误:

C:CodeBlocksSDLGameDrawObject.cpp|3|error: no matching function for call to 'AnimationSet::AnimationSet()'|
C:CodeBlocksSDLGameDrawObject.cpp|3|note: candidates are:|
C:CodeBlocksSDLGameAnimationSet.h|9|note: AnimationSet::AnimationSet(int)|
C:CodeBlocksSDLGameAnimationSet.h|9|note:   candidate expects 1 argument, 0 provided|
C:CodeBlocksSDLGameAnimationSet.h|5|note: AnimationSet::AnimationSet(const AnimationSet&)|
C:CodeBlocksSDLGameAnimationSet.h|5|note:   candidate expects 1 argument, 0 provided|

这是我的动画集:

class AnimationSet
{
    public:
        AnimationSet(int animationCounter);
        virtual ~AnimationSet();
        int getCurrentFrame();
        void setCurrentFrame(int currentFrame);
        int getCurrentAnimation();
        void setCurrentAnimation(int currentAnimation);
    private:
        int currentFrame;
        int curretAnimation;
        Animation* animations;
};

我的drawObject构造函数:

drawObject::drawObject(char* name, char* surfaceFile, int xPos, int yPos, int drawLevel, bool willMoveVar, bool isSpriteVar, int animationNumber)
{
    animationSet = new AnimationSet(animationNumber);
    name = name;
    xPos = xPos;
    yPos = yPos;
    willMoveVar = willMove;
}

您提供的代码没有显示错误在哪里,但我猜您在drawObject中有AnimationSet成员对象,这意味着,在没有默认构造函数的情况下,您必须在构造函数初始化列表中初始化它。

drawObject::drawObject(char* name, char* surfaceFile, int xPos, int yPos, int drawLevel, bool willMoveVar, bool isSpriteVar, int animationNumber) :
animationSet(animationNumber) //I'm assuming this isn't a pointer
{
  name = name;
  xPos = xPos;
  yPos = yPos;
  willMoveVar = willMove;
}