Skip to content

Instantly share code, notes, and snippets.

@geovanisouza92
Created July 21, 2012 15:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geovanisouza92/3156064 to your computer and use it in GitHub Desktop.
Save geovanisouza92/3156064 to your computer and use it in GitHub Desktop.
"Classe" em C
/*
* Created on: 21/07/2012
* Author: geovani
*/
#include "stdlib.h"
#include "stdio.h"
typedef struct PessoaBO Pessoa; // Definido antes para facilitar declaração
struct PessoaBO
{
char * Nome;
int Idade;
/** Destrutor */
void (*dispose)(Pessoa * self);
/** Método envelhecer */
void (*envelhecer)(Pessoa *);
};
void Pessoa_dispose (Pessoa * self)
{
free (self);
}
void Pessoa_envelhecer (Pessoa * self) // Implementação do método envelhecer
{
self->Idade ++;
}
Pessoa * Pessoa_new (char * nome, int idade) // Implementação do .ctor
{
Pessoa * result = (Pessoa *) malloc (sizeof (Pessoa));
result->dispose = Pessoa_dispose;
result->envelhecer = Pessoa_envelhecer;
result->Nome = nome;
result->Idade = idade;
return result;
}
int main ()
{
Pessoa * p = Pessoa_new ("geovani\0", 20);
p->envelhecer (p);
printf ("%s tem %d anos de idade", p->Nome, p->Idade);
p->dispose (p);
return 0;
}
@geovanisouza92
Copy link
Author

É possível inclusive, declarar a struct e os protótipos das funções em um arquivo .h e distribuí-lo por #include...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment