13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 113 — #151<br />

✐<br />

3.8. Creación de tipos compuestos<br />

parece a la declaración de un struct.<br />

Un tipo de datos <strong>en</strong>umerado es útil cuando se quiere poder seguir la pista de<br />

alguna característica:<br />

//: C03:Enum.cpp<br />

// Keeping track of shapes<br />

<strong>en</strong>um ShapeType {<br />

circle,<br />

square,<br />

rectangle<br />

}; // Must <strong>en</strong>d with a semicolon like a struct<br />

int main() {<br />

ShapeType shape = circle;<br />

// Activities here....<br />

// Now do something based on what the shape is:<br />

switch(shape) {<br />

case circle: /* circle stuff */ break;<br />

case square: /* square stuff */ break;<br />

}<br />

} ///:~<br />

case rectangle:<br />

/* rectangle stuff */ break;<br />

shape es una variable del tipo de datos <strong>en</strong>umerado ShapeType, y su valor se<br />

compara con el valor <strong>en</strong> la <strong>en</strong>umeración. Ya que shape es realm<strong>en</strong>te un int, puede<br />

albergar cualquier valor que corresponda a int (incluy<strong>en</strong>do un número negativo).<br />

También se puede comparar una variable int con un valor de una <strong>en</strong>umeración.<br />

Se ha de t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta que el ejemplo anterior de intercambiar los tipos ti<strong>en</strong>de<br />

a ser una manera problemática de programar. <strong>C++</strong> ti<strong>en</strong>e un modo mucho mejor de<br />

codificar este tipo de cosas, cuya explicación se pospondrá para mucho mas adelante<br />

<strong>en</strong> este libro.<br />

Si el modo <strong>en</strong> que el compilador asigna los valores no es de su agrado, puede<br />

hacerlo manualm<strong>en</strong>te, como sigue:<br />

<strong>en</strong>um ShapeType {<br />

circle = 10, square = 20, rectangle = 50<br />

};<br />

Si da valores a algunos nombres y a otros no, el compilador utilizará el sigui<strong>en</strong>te<br />

valor <strong>en</strong>tero. Por ejemplo,<br />

<strong>en</strong>um snap { crackle = 25, pop };<br />

El compilador le da a pop el valor 26.<br />

Es fácil comprobar que el código es más legible cuando se utilizan tipos de datos<br />

<strong>en</strong>umerados. No obstante, <strong>en</strong> cierto grado esto sigue si<strong>en</strong>do un int<strong>en</strong>to (<strong>en</strong> C) de<br />

lograr las cosas que se pued<strong>en</strong> lograr con una class <strong>en</strong> <strong>C++</strong>, y por eso verá que<br />

<strong>en</strong>um se utiliza m<strong>en</strong>os <strong>en</strong> <strong>C++</strong>.<br />

113<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!