c++ - 未使用的变量 'class' [-Wunused-variable] - 错误/警告

标签 c++ sdl

我有一个使用 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 行

这是“图像管理器”;

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 );
};

这是在不同的文件中定义的,但已正确包含。<​​/p>

编辑: 忘了说我正在使用这个类,但是当我使用它时编译器说它没有定义 我在这里使用图像管理器:

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 在按下右键或函数想要在下一个刻度运行时变为真

在我调用的其他事物的所有其他计算之后:

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 对象而只声明它 - 您会收到此警告。你可以使用例如 (void)imagemanager;,或者真的使用这个对象(开发应用之前不要注意这个警告),警告就会消失。

编辑:向我们展示这个对象的用法如何?

关于c++ - 未使用的变量 'class' [-Wunused-variable] - 错误/警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15518821/

相关文章:

c++ - 在 C++ 中使用 SDL 的简单声波发生器

c++ - While 循环导致 SDL_Rect 和 SDL_Textures 滞后?

opengl - 仅使用模板测试进行遮挡查询

c++ - C++ 的 VTK 和 ITK

c++ - 通过指针与数组引用进行数组索引序列扩展

c++ - 无法捕获 c++ 中的异常 : failure to identify exception type

c++ - 谁可以告诉我一些有关 IPropertyBag::Read 的信息?

c++ - C++ 中的纯 ABC 是否需要是虚拟的?

opengl - 使用 OpenGL 和 SDL 处理窗口大小调整

c++ - SDL MinGW Netbeans。 <SDL/SDL.h> 没有那个文件或目录