Function 函数未在作用域中声明与函数的多个定义

Function 函数未在作用域中声明与函数的多个定义,function,include,scope,Function,Include,Scope,我正在使用Code::Blocks制作一个简单的游戏。我试图学习如何保持良好的文件结构,但我显然遗漏了一些东西,因为我似乎无法从.cpp文件中定义的对象调用程序作用域函数 因此,我有一个对象tank,它在头文件include/tank.h中声明,并在.cpp文件src/tank.cpp中定义。这些是Code::Blocks在我使用file->new->class菜单时为我创建的文件。我还有一个函数apply_image的头文件,名为apply.h。apply.h包含在main.cpp文件中 当s

我正在使用Code::Blocks制作一个简单的游戏。我试图学习如何保持良好的文件结构,但我显然遗漏了一些东西,因为我似乎无法从.cpp文件中定义的对象调用程序作用域函数

因此,我有一个对象tank,它在头文件include/tank.h中声明,并在.cpp文件src/tank.cpp中定义。这些是Code::Blocks在我使用file->new->class菜单时为我创建的文件。我还有一个函数apply_image的头文件,名为apply.h。apply.h包含在main.cpp文件中

当src/tank.cpp如下所示时:

#include "tank.h"

void tank::drawMe(SDL_Surface* screen)
{
    apply_surface(x,y, tankImg, screen);
}
我得到一个编译器错误,读取| error:“apply_surface”未在此范围内声明| 因此,我为apply.h添加了一个include,如下所示:

#include "tank.h"
#include "apply.h"

void tank::drawMe(SDL_Surface* screen)
{
    apply_surface(x,y, tankImg, screen);
}
现在我得到了一个编译器错误,读取| apply_surfaceint,int,SDL_Surface*,SDL_Surface*的多个定义|我赢不了

我已经查阅了C++的一些文本,但我看不出我在做什么。任何澄清都将不胜感激,谢谢

试试看,谢谢!我添加了extern void apply_surfaceint,int,SDL_Surface*,SDL_Surface*;到我的第一个代码片段,它工作得很好!非常感谢你!