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 306 — #344<br />

✐<br />

Capítulo 10. Control de nombres<br />

31. Cree una clase que repres<strong>en</strong>te una conexión a impresora, y que sólo le permita<br />

t<strong>en</strong>er una impresora.<br />

32. En un archivo de cabecera, cree una clase Mirror que conti<strong>en</strong>e dos atributos:<br />

un puntero a un objeto Mirror y un bool. Déle dos constructores: el constructor<br />

por defecto inicializa el bool a true y el puntero a Mirror a cero. El<br />

segundo constructor toma como argum<strong>en</strong>to un puntero a un objeto Mirror,<br />

que asigna al puntero interno del objeto; pone el bool a false. Añada un método<br />

test(): si el puntero del objeto es distinto de cero, devuelve el valor de<br />

test() llamado a través del puntero. Si el puntero es cero, devuelve el bool.<br />

Cree ahora cinco archivos cpp, cada uno incluy<strong>en</strong>do la cabecera Mirror. El<br />

primer archivo cpp define un objeto Mirror global utilizando el constructor<br />

por defecto. El segundo archivo declara el objeto del primer archivo como e-<br />

xtern, y define un objeto Mirror global utilizando el segundo constructor,<br />

con un puntero al primer objeto. Siga haci<strong>en</strong>do lo mismo hasta que llegue al<br />

último archivo, que también cont<strong>en</strong>drá una definición de objeto global. En este<br />

archivo, main() debe llamar a la función test() e informar del resultado. Si<br />

el resultado es true, <strong>en</strong>cu<strong>en</strong>tre la forma de cambiar el ord<strong>en</strong> de <strong>en</strong>lazado de<br />

su <strong>en</strong>lazador y cámbielo hasta que el resultado sea false.<br />

33. Repare el problema del Ejercicio 32 utilizando la técnica uno mostrada <strong>en</strong> este<br />

libro.<br />

34. Repare el problema del Ejercicio 32 utilizando la técnica dos mostrada <strong>en</strong> este<br />

libro.<br />

35. Sin incluir ningún archivo de cabecera, declare la función puts() de la Librería<br />

Estándar de C. Llame a esa función desde main().<br />

306<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!