19 Definición de tipos, tipos derivados

En ocasiones puede ser útil definir nombres para tipos de datos, 'alias' que nos hagan más fácil declarar variables y parámetros, o que faciliten la portabilidad de nuestros programas.

Para ello C++ dispone de la palabra clave typedef.

Sintaxis:

typedef <tipo> <identificador>; 

<tipo> puede ser cualquier tipo C++, fundamental o derivado.

Ejemplos

typedef unsigned int UINT;

UINT será un tipo válido para la declaración de variables o parámetros, y además será equivalente a un entero sin signo.

typedef unsigned char BYTE;

BYTE será un tipo equivalente a ocho bits.

typedef unsigned short int WORD;

WORD será un tipo equivalente a dieciséis bits. Este último es un caso de dependencia de la plataforma, si WORD debe ser siempre una palabra de dieciséis bits, independientemente de la plataforma, deberemos cambiar su definición dependiendo de ésta. En algunas plataformas podrá definirse como:

typedef unsigned int WORD;

y en otras como:

typedef unsigned long int WORD;

Declarar un tipo para WORD en un fichero de cabecera, nos permitirá adaptar fácilmente la aplicación a distintas plataformas.

typedef struct stpunto tipoPunto;

Define un nuevo tipo como una estructura stpunto.

typedef struct {
   int x;
   int y;
   int z;
} Punto3D;

Define un nuevo tipo Punto3D, partiendo de una estructura.

typedef int (*PFI)();

Define PFI como un puntero a una función que devuelve un puntero.

PFI f;

Declaración de una variable f que es un puntero a una función que devuelve un entero.

Palabras reservadas usadas en este capítulo

typedef.

Comentarios de los usuarios (3)

JOSÉ MORENO
2010-04-19 21:38:42

Es posible utilizar typedef en un código como el siguiente:

#ifndef sphere_h

#define sphere_h

#include <stdlib.h>

#include <time.h>

#include <math.h>

typedef class TSphere

{

private:

float maxpos;

float pos[3];

float dir[3];

float speed;

public:

TSphere(float maxpos, float speed);

void test();

void modifySpeed(float inc);

float * getPosv();

} TSphere;

#endif

Adrian
2016-09-26 00:01:10

Dijiste que PFI es un puntero a una funcion que retorna un puntero. En realidad no retorna un puntero, sino un simple int.

Por cierto, si declaras y le das valor a un puntero que apunta a una funcion, puedes usar el puntero igual que la funcion. Es decir:

int f(); // <- Declaracion de la funcion que no vamos a entrar en detalles sobre como esta definida.

int (*pf)();

pf = f // Por alguna razon, tambien vale pf = &f, o pf = *f, o pf = *******f.

pf(); //Esta forma de llamar a la funcion tambien vale, ademas de la de (*pf)();

Adrian
2016-09-26 00:04:16

Esque en otro tutorial decian que para llamar a la funcion que apunta el puntero tenia que hacerse (*pf)(), pero en este tutorial dices que se puede hacer pf();

Eso es todo lo que queria decir.