[英]warning: unused variable ‘arrPixel’ [-Wunused-variable]
[英]unused variable 'class' [-Wunused-variable] - error/warning
我有一個使用SDL的C ++項目。
編譯時出現此錯誤,我不知道如何解決。
它說:
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中初始化。 我在播放器中使用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
對象,而僅聲明它-您將imagemanager
此警告。 您可以使用例如(void)imagemanager;
,或真正使用此對象(在開發應用程序之前,請不要注意此警告),警告將消失。
編輯:如何向我們展示該對象的用法?
imagemanager
是類型的變量(對象) Imagemanager
。
因此,警告是正確的。 在代碼中的某處使用imagemanager
或刪除該行。
另請注意,C ++區分大小寫,因此Imagemanager
和imagemanager
之間存在差異。
一個是代碼中的類,另一個是該類型的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.