0

我在使用链表在 SDL 中将“主体”(单个正方形)输出到屏幕上时遇到问题。

我有一个node有两个数据变量:node指向下一个的指针和一个SDL_Rect值。

这就是我调用SDL_FillRect函数的方式:

node* tmp; 

SDL_FillRect(screen, &tmp->body, white);

这是我的节点类:

class node{

    friend class map;

private:        
    node* next;

    SDL_Rect body;

public:         

    node() : next(NULL) {body.h = 15, body.w = 15, body.x = 390, body.y = 290;}

};

但是,当我打电话时

node tmp; 

SDL_FillRect(screen, &tmp.body, white);

node不是指针的地方,正方形输出很好。

关于如何让它与指向节点的指针一起工作的任何提示?

4

2 回答 2

1
  node* tmp;
  SDL_FillRect(screen, &tmp->body, white);

您似乎没有分配对象 tmp。应该有一个tmp = new node;地方。

于 2013-06-28T16:44:16.487 回答
0

当你这样做时:

node* tmp;

你只是从类'node'声明一个指向对象的指针,但你没有从类中实例化一个对象(如果你想获得里面的 SDL_Rect 将什么都没有,只是一个指针)。

另一种方法:

node tmp;

您正在实例化该类,这是一种正确的方式,如果您想传递一个指针而不是您在这里所做的方向:

SDL_FillRect(screen, &tmp->body, white);

您应该以这种方式实例化该类,以使您的指针指向某些东西:

节点* tmp = 新节点;

只有这样你才能从你的指针中获得一些东西:

SDL_FillRect(screen, tmp->body, white);
于 2016-12-16T20:33:58.850 回答