gpt4 book ai didi

c++ - 无法从其他类的函数访问对象的参数

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:22 26 4
gpt4 key购买 nike

我有几个类(class)。

class DRAW {
private:
unsigned int back_texture;
unsigned int hero_texture;

public:
DRAW();
~DRAW();
void start_draw();
void draw_back();
void draw_hero();
void end_draw();

};
class HERO {

private:
float x,y,w,h; //coordinates
float hp; //health

public:
friend class DRAW;

HERO(float x1, float y1, float w1, float h1, float hp1);
~HERO();

void set_posX(float x1);
void set_posY(float y1);
void set_height(float h1);
void set_width(float w1);
void set_health(float hp1);

float get_posX();
float get_posY();
float get_height();
float get_width();
float get_health();

void move(char direrion);

};

我在程序的主函数 (hero = new HERO()) 中创建了对象。我正在尝试从 draw_hero() 函数访问对象 hero 的参数。

void DRAW :: draw_hero() {

glBindTexture(GL_TEXTURE_2D, hero_texture);

glBegin(GL_QUADS);

glTexCoord2d(0,0); glVertex2f(hero->get_posX(),hero->get_posY());
glTexCoord2d(1,0); glVertex2f(hero->get_posX() + hero->get_width(),hero->get_posY());
glTexCoord2d(1,1); glVertex2f(hero->get_posX() + hero->get_width(),hero->get_posY() + hero -> get_height());
glTexCoord2d(0,1); glVertex2f(hero->get_posX(),hero->get_posY());
glEnd();

}

当我编译时,我得到了这个: draw.h:83:32: error: 'hero' 未在此范围内声明

有什么问题吗?

已添加: 主要内容如下:

int main (int argc, char* argv[] ) {

/* DECLARATION */

SDL_Event event;

SYSTEM* system;

bool isRunning = true;

Uint8* key;

static HERO* hero;
hero = new HERO(300,300, 40, 40, 100);

DRAW* image = new DRAW;
DRAW();
.
.
.
/* RENDERING */


image -> start_draw();
image -> draw_back();
image -> end_draw();

最佳答案

用类似的参数声明你的函数

void DRAW :: draw_hero(HERO * hero) {/* rest of the code*/}

并在调用时将指向创建的对象 hero 的指针传递给该函数。

关于c++ - 无法从其他类的函数访问对象的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115492/

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