gpt4 book ai didi

C++ 错误 C2065 : undeclared identifier

转载 作者:行者123 更新时间:2023-11-28 00:51:05 34 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
C++ Undeclared Identifier (but it is declared?)

当我尝试编译时出现错误 sprite.h(20): error C2065: 'Component' : undeclared identifier (我也有一些其他文件)。下面是 sprite.h 文件。我终究无法弄清楚是什么导致了这个问题。

#ifndef SPRITE_H
#define SPRITE_H

#include "Image.h"
#include "Rectangle.h"
#include <string>
#include <SDL.h>
#include <vector>
#include "Component.h"

namespace GE2D {

class Sprite {
public:
Sprite();
Sprite(Image *i);
Sprite(Image *i, int x, int y);
Sprite(char *file, bool transparentBg, int x, int y, int w, int h);
virtual ~Sprite();
virtual void tick(SDL_Surface *screen, std::vector<Sprite*>* sprites, std::vector<Component*>* components);
virtual void handleEvent(SDL_Event eve);
virtual void draw(SDL_Surface *screen);
void setPosition(int x, int y);
const Rectangle& getRect() const;
const Image& getImage() const;
const Sprite& operator=(const Sprite& other);
Sprite(const Sprite& other);
protected:

private:
Image image;
Rectangle rect;
};

}
#endif

.cpp文件中,tick()定义如下:

void Sprite::tick(SDL_Surface *screen, std::vector<Sprite*>* sprites, std::vector<Component*>* components) {}

tick() 应该像现在这样接受两个 vector ,但也许有更好的方法来解决这个问题?

编辑根据要求,这里还有 Component.h:

#ifndef COMPONENT_H
#define COMPONENT_H

#include "Rectangle.h"
#include "Component.h"
#include "Sprite.h"
#include <vector>
#include <SDL.h>

namespace GE2D {

class Component {
public:
Component();
virtual ~Component();
virtual void draw(SDL_Surface *screen) = 0;
virtual void tick(SDL_Surface *screen, std::vector<Sprite*>* sprites, std::vector<Component*>* components) = 0;
virtual void handleEvent(SDL_Event eve) = 0;
const Rectangle& getRect() const;

protected:
Component(int x, int y, int w, int h);
private:
Rectangle rect;
};

}
#endif

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com