staltux
(usa Slackware)
Enviado em 27/01/2009 - 04:16h
eu estou tentando alterar os valores da dstrect(SDL_Rect)
do objeto player apartir da classe Mapa...
mas parece que no lugar de enviar o objeto dstrect, estou enviando uma copia dele...pois as alterações feitas pela classe Mapa nao fazem efeito no objeto em questão...
quando faço isso em java funciona...
tentei enviar um ponteiro no lugar mas nao adiantou...
tentei enviar o propio objeto player...
mas nao deu pq a classe Player inclui a Mapa e a Mapa inclui o Player...dai vira um loop infinito...
resumindo minha duvida é o seguinte:
como eu posso modificar o valor de um objeto enviado como paramentro para uma outra classe? e oque eu estou fazendo errado ?
ja vi que tentar fazer C++ o que eu faço em java nao vai dar muito certo...
ai vai as classes nas quais eu estou trabalhando...
obs: removi os switch e tais pra postar só a parte que eu acho que importa pra nao ficar muito grande...
// Objeto.cpp
class Objeto {
public:
bool existe;
SDL_Rect dstrect;
SDL_Surface* img;
Objeto(void){
existe=false;
dstrect.x=1;
dstrect.y=1;
};
void ativar(void){
existe=true;
}
};
// Player.cpp
class Player: public Objeto{
public:
Player(void){
cout << " \n Dentro do player \n";
img = IMG_Load("img/player.png");
if (!img)
{
printf("Unable to load bitmap: %s\n", SDL_GetError());
};
// minimo 1
dstrect.x=1;
dstrect.y=1;
};
~Player(void){
//delete img;
};
void moverCima(){};
void moverBaixo(){};
void moverEsquerda(){};
void moverDireita(Mapa mapa){
cout << "\n player x=" << dstrect.x;
mapa.moverObjeto(dstrect,2);
};
void soltarBomba(){};
};
// e a parte que importa do Mapa.cpp
void moverObjeto(SDL_Rect dstrect,int direcao){
cout << "\n antes x=" << dstrect.x;
dstrect.x+=32;
cout << "\n depois x=" << dstrect.x;
}