对类的私有函数的未定义引用

时间:2013-09-15 04:20:46

标签: c++ class sdl undefined

所以我正在调试一些可怕的代码,我把它放在一起,最后摆弄(希望)我的scene_manager.cpp中的最后一个错误,但我似乎不明白为什么我得到它。 错误

|22|undefined reference to `scene_manager::applySurface(int, int, SDL_Surface*, SDL_Surface*)'|

scene_manager.cpp

#include "scene_manager.h"

scene_manager::scene_manager(screen_manager* s){
    screen = s;
}

void scene_manager::add_object(object_manager* obj){
    if(game_objects.find(obj->get_name()) != game_objects.end()){
        game_objects[obj->get_name()] = obj;
    }
}

void applySurface(int x, int y, SDL_Surface* source, SDL_Surface* destination){
    SDL_Rect offset;
    offset.x = x;
    offset.y = y;
    SDL_BlitSurface(source, NULL, destination, &offset);
}

int scene_manager::render(){
    for(iter = game_objects.begin(); iter != game_objects.end();iter++){
        applySurface(game_objects.at(iter->first)->get_x(),game_objects.at(iter->first)->get_y(),game_objects.at(iter->first)->get_sprite(),screen->get_screen());
    }
    if(SDL_Flip(screen->get_screen()) == -1){
        return 1;
    }
    return 0;
}

scene_manager.h

#ifndef SCENE_MANAGER_H
#define SCENE_MANAGER_H
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "object_manager.h"
#include "screen_manager.h"
#include <map>
#include <string>

class scene_manager{
public:
    scene_manager();
    scene_manager(screen_manager* s);
    void add_object(object_manager* obj);
    int render();
private:
    std::map<std::string,object_manager*>game_objects;
    std::map<std::string,object_manager*>::iterator iter;
    screen_manager* screen;
    void applySurface(int x, int y, SDL_Surface* source, SDL_Surface* destination);
};
#endif

2 个答案:

答案 0 :(得分:3)

看来,这一行

void applySurface(int x, int y, SDL_Surface* source, SDL_Surface* destination){

想要阅读

void scene_manager::applySurface(int x, int y, SDL_Surface* source, SDL_Surface* destination){

答案 1 :(得分:0)

在课堂外定义scope resolution operator功能时,您需要applySurface

void scene_manager::applySurface(int x, int y, SDL_Surface* source, SDL_Surface* destination){
     //^^^^^^^^^^^^^