未使用的变量 'class' [-Wunused-变量] - 错误/警告
unused variable 'class' [-Wunused-variable] - error/warning
我在c++中使用SDL完成了这个项目。
我在编译时得到这个错误,我不知道如何修复它。
它说:
Source/Classes/game.cpp:15:15: advarsel(this means 'warning' in danish): unused variable 'imagemanager' [-Wunused-variable]
但是imagemanager是一个类?这是导致错误的行:
Imagemanager imagemanager; // Init's class Imagemanager
它位于文件'game.cpp'的第15行
这是'Imagemanager';
class Imagemanager
{
friend class Player;
private:
public:
SDL_Surface* load_image( std::string filename ); // Loads images
//Apply a surface to another. Often used for applying surface to display
int apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip );
};
这是在另一个文件中定义的,但它被正确地包含。
编辑:忘了说我正在使用这个类,但编译器说,当我使用它,它没有定义我在这里使用imagemanager:
surface = imagemanager.load_image("player.png";);
在另一个名为
的类中Player
,初始化为
player
两个类(imagemanager和player)都在Game类的构造函数中初始化,Game类在main中初始化。我在player中使用imagemanager,并计划在其他地方也使用它。主文件:
#include <windows.h>
#include <string>
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "Classes/game.cpp"
int main( int argc, char* args[] )
{
Game game;
game.initialize(); // Initializes the rest of game
game.go(); // Starts the game
return 0; // Ends the program
}
Game.cpp的构造函数+头文件:
#ifndef _GAME_
#define _GAME_
#include "imagemanager.cpp"
#include "player.cpp"
#include "timer.cpp"
#include "game.h"
Game::Game()
{
screenDimension.w = 940; // Width of the initialized window
screenDimension.h = 540; // Height of the initialized window
useFrameCap = true; // Tells the frame cap wether to activate or not
quitGame = false; // Tells the main loop to quit if true
FPS = 60; // Frames per second. Used by the frame cap.
Imagemanager imagemanager; // Inits class Imagemanager
Player player; // Inits class Player
Timer timer; // Inits class Timer
Game game; // Inits class Game
}
之后在"game.go()"中,我调用了函数"player.render()",之后调用了"player.update()"。":
if ( RunJumpF )
{
RunJumpF = player.jump();
}
当右键被按下或者当函数想在下一个刻度
运行时,RunJumpF将变为true在所有其他的计算之后,我调用:
player.update();
我的player.cpp文件的实际功能如下所示:
#ifndef __PLAYER__
#define __PLAYER__
#include <string>
#include "player.h"
Player::Player()
{
surface = imagemanager.load_image("player.png";); // Loads the player tile and saves into the surface 'surface'
if (surface == NULL) // in case something went wrong in loading the player, tell the user
{
SDL_WM_SetCaption("ERROR LOADING PLAYER!", NULL); // I know there are better ways to do this but i'll look at that later
}
needsUpdate = true;
}
bool Player::jump()
{
move.x = move.x + 3; // Moves the player X pixels right, next time the player updates
needsUpdate = true; // Tells the program to update the player
return true; // Tells the program that this function isn't done and it will be run next tick
}
int Player::update()
{
if ( needsUpdate )
{
pos.x = pos.x + move.x;
pos.y = pos.y + move.y;
move.x = 0;
move.y = 0;
render(); // This calculates the position of the player and blits the player to the display
return 1; // If no errors were discovered return 1;
} else {
render();
return -1; // If no need to update, returns -1
}
}
bool Player::render()
{
if (SDL_BlitSurface( surface, NULL, display, pos ) != 0)
{
SDL_WM_SetCaption("ERROR BLITTING PLAYER!", NULL); // Tells the user that shit gone wrong
return false;
}
return true
}
#endif
这是警告,不是错误。由于您不使用imagemanager
对象,而只是声明它,因此会出现此警告。你可以用for example(void)imagemanager;
,或者真正使用这个对象(不要注意这个警告,直到你开发应用程序),警告将消失。
编辑:告诉我们这个对象的用法如何?
imagemanager
是Imagemanager
类型的变量(对象)。
所以,警告是正确的。在代码的某个地方使用imagemanager
,或者删除这行。
还要注意,c++是区分大小写的,所以Imagemanager
和imagemanager
之间是有区别的。
一个是代码中的类,另一个是该类型的对象。
- 修复未初始化的局部变量错误
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 如何修复C 中向量的过载变量错误
- GUI QT全局变量错误
- 全局变量错误C
- GetFieldValue用于时间变量错误
- 变量错误:未知类型名称
- 在变量错误中浮动
- 无法使用函数变量?错误表达式必须具有类类型
- 计数器变量错误
- 初始化 cpp 文件中的私有静态成员变量.错误:成员是私有的
- 在 GetTransfer 之后,我在帐户 1 收到未分配变量错误。我无法弄清楚我搞砸了什么逻辑错误
- 变量错误的重新定义
- 在 C++ 中传递 int 变量 - 错误检查不返回值
- 未使用的变量错误,或者应该是错误
- C++外部矢量变量错误
- c模板成员变量错误
- c++中的全局变量错误LNK2020
- vc++类.静态变量错误,外部符号无法解析