好的,我的 Sprite 类遇到了这个问题。基本上,精灵类应该有一个 Vector 类的对象作为其成员,而 Vector 是一个具有角度和速度的类。Vector 类有一个 Vector(double,double) 构造函数,因此可以在初始化时设置速度和角度,但是当我创建我的 sprite 类时。它发送一个错误,它调用 Vector(),一个空白构造函数,并且它不存在。我试图弄清楚它为什么调用 Vector()。这是我来自 Sprite 和 Vector 类的代码。
#Vector.h
#ifndef VECTOR_H
#define VECTOR_H
class Vector
{
    public:
        Vector(double,double);
        double getX();
        double getY();
        double getSpeed();
        double getAngle();
        void setSpeed(double);
        void setAngle(double);
    private:
        double speed,angle;
};
#endif
#Vector.h
#include "SDL/SDL.h"
#include "vector.h"
#include "math.h"
Vector::Vector(double speed,double angle)
{
    this -> speed = speed;
    this -> angle = angle;
}
double Vector::getX()
{
    return speed*cos(angle);
}
double Vector::getY()
{
    return speed*sin(angle);
}
double Vector::getSpeed()
{
    return speed;
}
double Vector::getAngle()
{
    return angle;
}
void Vector::setAngle(double angle)
{
    this -> angle = angle;
}
void Vector::setSpeed(double speed)
{
    this -> speed = speed;
}
#Sprite.h:
#ifndef SPRITE_H
#define SPRITE_H
#include "vector.h"
class Sprite
{
    public:
        Sprite(int x,int y);
        SDL_Rect getRect();
        SDL_Surface* getImage();
        void setRect(SDL_Rect);
        void move();
        void draw(SDL_Surface*);
    private:
        Vector movement;
        double x,y,lastX,lastY,angle,speed;
        SDL_Rect rect;
        SDL_Surface* image;
};
#endif
#Sprite.cpp:
#include "SDL/SDL.h"
#include "sprite.h"
#include "functions.h"
#include <cmath>
Sprite::Sprite(int x, int y)
{
    this -> x = x;
    this -> y = y;
    lastX = x;
    lastY = y;
    image = loadImage("box.png");
    rect.x = x;
    rect.y = y;
    rect.w = image->w;
    rect.h = image->h;
    speed = 1;
    angle = 0;
}
SDL_Rect Sprite::getRect()
{   
    return rect;
}
SDL_Surface* Sprite::getImage()
{
    return image;
}
void Sprite::setRect(SDL_Rect rect)
{
    this -> rect = rect;
}
void Sprite::move()
{
    lastX = x;
    lastY = y;
    x += speed*cos(angle);
    y += speed*sin(angle);
    rect.x = int(x);
    rect.y = int(y);
}
void Sprite::draw(SDL_Surface* dest)
{
    blit(image,dest,int(x),int(y));
}