未定义的引用继承

时间:2016-05-01 10:27:33

标签: c++ inheritance

我创建了基础Sprite类:

cipherText

接下来,我创建了使用Sprite类作为基础的Bird类:

#ifndef SPRITE_H_
#define SPRITE_H_

#include<iostream>
#include<SDL2/SDL.h>
#include<SDL2/SDL_image.h>

class Sprite
{
public:
    Sprite(SDL_Texture* texture, int x, int y, int w, int h, SDL_Renderer* p_renderer);
    virtual ~Sprite();
    SDL_Rect getRect();
    SDL_Texture* loadImage(std::string file_path);
    void drawSprite();
    void setPosition(int x, int y);
    float getXpos();
    float getYpos();
private:
    SDL_Renderer* gRenderer;
    SDL_Texture* image;
    SDL_Rect rect;
    //for position update
    float x_pos;
    float y_pos;
};

#endif /* SPRITE_H_ */

    #include "Sprite.h"

Sprite::Sprite(SDL_Texture* texture, int x, int y, int w, int h, SDL_Renderer* p_renderer)
{
    gRenderer = p_renderer;
    image = texture;
    rect.x = x;
    rect.y = y;
    rect.w = w;
    rect.h = h;
    x_pos = x;
    y_pos = y;
}

Sprite::~Sprite()
{
    SDL_DestroyTexture(image);
}

float Sprite::getXpos()
{
    return x_pos;
}

float Sprite::getYpos()
{
    return y_pos;
}

SDL_Texture* loadImage(std::string file_path, SDL_Renderer* p_renderer)
{
    return IMG_LoadTexture(p_renderer, file_path.c_str());
}

void Sprite::drawSprite()
{
    SDL_RenderCopy(gRenderer, image, NULL, &rect);
}

现在我收到错误,我不明白为什么: ../src/Bird.cpp:18:未定义引用`Sprite :: setPosition(int,int)&#39;

1 个答案:

答案 0 :(得分:0)

 foreach ( Control cn in this.Controls )
            {
                ValidateControle(cn);

            }