繁体   English   中英

错误:不允许指向不完整类类型的指针。 SDL / c ++

[英]Error: Pointer to incomplete class type is not allowed. SDL/c++

因此,我是SDL的新手,在我的代码中遇到了以下错误:

不允许指向不完整类类型的指针。

这是代码:

main.cpp

#include <SDL.h>
#include "events.h"

int main(int argc, char ** argv)
{
SDL_Renderer* ro;
SDL_Texture* to;
SDL_Surface* so;
SDL_Window* wo;


SDL_FreeSurface(so->getImage());

SDL_SetRenderDrawColor(ro->getRenderer(), 255, 255, 255, 255); // error here

// handle events

events mo;
mo.handleEvents();

// cleanup SDL

SDL_DestroyTexture(to->getTexture()); // error here
SDL_DestroyRenderer(ro->getRenderer()); // error here
SDL_DestroyWindow(wo->getWindow()); // error here
SDL_Quit();

return 0;
}

events.h

#pragma once
class events
{
public:
events();
void handleEvents();
SDL_Renderer* getRenderer();
SDL_Texture* getTexture();
SDL_Surface* getImage();
SDL_Window* getWindow();
~events();
private:
SDL_Event event;
int x;
int y;
bool quit;
SDL_Renderer *renderer;
SDL_Texture *texture;
SDL_Surface *image;
SDL_Window *window;
};

events.cpp

#include "events.h"
#include <SDL.h>


events::events()
{
SDL_Event event;
int x = 288;
int y = 208;
bool quit = false;
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0);
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, image);
SDL_Surface *image = SDL_LoadBMP("face.bmp");
SDL_Window *window = SDL_CreateWindow("SDL2 Keyboard/Mouse events", SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
}


events::~events()
{
}

void events::handleEvents(){

SDL_Init(SDL_INIT_VIDEO);

while (!quit)
{
    SDL_Delay(10);
    SDL_PollEvent(&event);

    switch (event.type)
    {
    case SDL_QUIT:
        quit = true;
        break;

    case SDL_KEYDOWN:
        switch (event.key.keysym.sym)
        {
        case SDLK_LEFT:
            x -= 5;
            break;
        case SDLK_RIGHT:
            x += 5;
            break;
        case SDLK_UP:
            y -= 5;
            break;
        case SDLK_DOWN:
            y += 5;
            break;
        }
        break;
    }

    SDL_Rect dstrect = { x, y, 64, 64 };

    SDL_RenderClear(renderer);
    SDL_RenderCopy(renderer, texture, NULL, &dstrect);
    SDL_RenderPresent(renderer);
  }
}

SDL_Renderer* events::getRenderer(){
return renderer;
}

SDL_Texture* events::getTexture(){
return texture;
}

SDL_Surface* events::getImage(){
return image;
}

SDL_Window* events::getWindow(){
return window;
}

在编译events.cpp时会遇到该错误,因为events.h在使用SDL数据类型之前不包括SDL.h 然后在events.cpp ,在events.h之后包含SDL.h ,因此是错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM