Jump to content

Duvida Class(es)


edub13
 Share

Recommended Posts

É "perigoso" estares a seguir um tutorial de C++ e a programar em C. As classes em C++ permitem-te, entre outras coisas, definir métodos, ou seja, funções que são específicas da classe e têm acesso às variáveis do objecto em que se encontram.

Em C a melhor alternativa é usares structs para representar os dados e escrever funções que recebem structs como parâmetros (possivelmente apontadores para estas structs).

Não respondo a dúvidas por mensagem.

Link to comment
Share on other sites

Acabei de te explicar como é que dá. Em vez de definires as funções dentro da class (que não existe em C), usas uma struct para conter as variáveis que a class de C++ tem, e fazes funções fora da class que recebem a struct como parâmetro e a alteram.

Vais reparar que as funções que estão declaradas dentro da class, no seu código acedem às variáveis da class como se fossem variáveis locais (presumo que estejas na lesson09). As funções da class Button acedem à variável box e alteram-na como se fosse uma variável local.

Em C a alternativa é receberes um apontador para uma struct com essas variáveis na função, e alterá-la. Em vez de ter:

Button::Button( int x, int y, int w, int h )
{
    //Set the button's attributes
    box.x = x;
    box.y = y;
    box.w = w;
    box.h = h;
    
    //Set the default sprite
    clip = &clips[ CLIP_MOUSEOUT ];
}

terias

void Button(struct Button *but, int x, int y, int w, int h )
{
    //Set the button's attributes
    but->box.x = x;
    but->box.y = y;
    but->box.w = w;
    but->box.h = h;
    
    //Set the default sprite
    but->clip = &clips[ CLIP_MOUSEOUT ];
}

A definição da struct Button seria igual à class Button, mas sem incluir as funções. Outra diferença é que a função que mostrei acima em C++ é um construtor, quando crias um objecto da class Button, esta função é chamada automaticamente e inicializa as variáveis:

Button mybutton( 170, 120, 320, 240 );

Em C terias que primeiro criar uma variável do tipo struct Button e depois chamar a função Button para inicializar as variáveis:

struct Button mybutton;
Button(&mybutton,  170, 120, 320, 240 );

Como vês tens que fazer várias alterações no código, mas é possível obter o mesmo funcionamento em C que o código em C++, tens é mais trabalho.

Não respondo a dúvidas por mensagem.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.