[C con Clase] Problema: Errores en el Compilador

David Reza l.fix3r.l en gmail.com
Mar Dic 26 20:40:01 CET 2006


Hola, primero que nada, gracias a todos los que respondieron mi mensaje, ya
que cada uno de ustedes me ayudó a aprender algo nuevo. El código lo
solucioné y quedó bastante limpio después de sus consejos. La razón de los
errores era que al escribir using namespace System, el compilador no
encuentra (y sigue sin encontrar) ese "espacio con nombre", por lo tanto me
decía que las funciones Console::Write, Console::Writeline, etc., no estaban
declaradas, y tal y como dijo Juan Antonio, tuve que cambiar esas
instrucciones por instrucciones cout y cambiar el espacio con nombre al std,
que proviene de la librería <iostream>. El archivo de cabecera
stdfax.hefectivamente no lo necesitaba.

Quisiera saber si alguien me podría decir cómo puedo utilizar las funciones
Console::Write, Console::Writeline, que supongo que son de alguna librería
así como cout es de la librería de <iostream>.

Y también preguntar por mis otras dudas ya expuestas:
¿Cómo hago una clase administrada? En Visual Studio es con _gc antes del
nombre de la clase, en todos los compiladores es igual?

¿La clase administrada me sirve para que los objetos se eliminen solos
cuando ya no se necesiten? También sé que se crean en el CLR (Common
Language Runtime) en vez de crearse en la pila y por tanto se tienen que
crear objetos primero definiendo un puntero para poder almacenar la
dirección de memoria del objeto.

¿Cómo creo una clase no administrada? ¿Con _value antes del nombre de la
clase? ¿Es igual para todos los compiladores?

¿Un puntero puede almacenar otro puntero? ¿En las clases administradas se
supone que al crear un objeto se crea en tiempo de ejecución y en realidad
devuelve un puntero que almacenamos en otro puntero?

Saludos y muchas gracias por la ayuda.



El día 26/12/06, Juan Antonio <jalr43 en hotmail.com> escribió:
>
>  Hola David,
>
> crea un proyecto de consola con el DEV-C++ en C++. Lo único que aparece en
> tu código que da un poco la lata por los includes y demas es cuando se
> muestra por pantalla.
>
> Console::Write("Número de Cuenta");
> Console::Writeline(numCuenta);
>
> Console::Write("Balance Actual");
> Console::Writeln(currentBalance);
>
> Modifica tus primeros includes por estos:
>
> #include <iostream>    //Entrada/salida estándar
> #include "TarjetaCredito.h"
>
> using namespace std;    //Para ahorrarte el std:: al usar funciones de
> entrada/salida estándar. Más información en
> http://c.conclase.net/curso/index.php?cap=026
>
> Y modifica tu función que muestra resultados por:
>
>
> void TarjetaCredito::Resultados()
> {
>      cout << "Número de Cuenta ";    //Más informació cout en
> http://c.conclase.net/curso/index.php?cap=903e#APD_cout
>      cout << numCuenta;
>
>      cout << "Balance Actual ";
>      cout << currentBalance;
> }
>
>
> La declaración de la clase,
>
> class TarjetaCredito
> {
>       public:
>              bool HacerCompra(double amount);
>              void Pagar(double amount);
>              void Resultados();
>       private:
>               long numCuenta;
>               double currentBalance;
>               double creditLimit;
> }
>
> Con esto ya debería funcionarte sin problemas.
>
> API como ya te dijeron son un montón de funciones, variables, estructura,
> macros, etc que te permiten programar cosas bastantes complejas dándote el
> código ya hecho. Por ejemplo el API de MS-Windows te permite hacer cosas
> así:
>
> Conectarte a una webcam que esté instalada en Windows, configurarla,
> grabar vídeo, imágenes, etc
> Crear interfaces gráficas de usuario bastante rápido.
> Un montón de funciones para graficar en pantalla, copiar el contenido de
> la pantalla en un .bmp, etc
> Usar el ratón en tus programas.
>
> Puedes consultar el curso del API de MS-Windows en www.conclase.net, ahí
> verás muchas más cosas que permite hacer.
>
> Un saludo,
> Juan Antonio.
>
>
>
>  ----- Original Message -----
> *From:* David Reza <l.fix3r.l en gmail.com>
> *To:* Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
> *Sent:* Monday, December 25, 2006 7:07 AM
> *Subject:* [C con Clase] Problema: Errores en el Compilador
>
> Hola, pues apenas hoy, en plena víspera de Navidad aquí en México me
> decidí a instalar el Dev-C++ y a relizar una clase y un objeto que tengo
> como ejemplos en un libro de C++. Según basta con poner esto y me debe de
> compilar todo. El archivo fuente es este:
>
>  #include <cstdlib>
> #include <iostream>
> #include "stdafx.h
> #include "TarjetaCredito.h"
>
> #using <mscorlib.dll>
> using namespace System;
> using namespace std;    //
>
> int main()
> {
>     TarjetaCredito *Mi_Cuenta;
>     Mi_Cuenta = new TarjetaCredito;
>     Mi_Cuenta -> HacerCompra(100);
>     Mi_Cuenta -> Pagar(70);
>     Mi_Cuenta -> Resultados();
>     delete Mi_Cuenta;
>     return 0;
> }
>
> bool TarjetaCredito::HacerCompra(double amount)
> {
>      if (currentBalance + amount > creditLimit)
>      {
>                         return false;
>      }
>      else
>      {
>          currentBalance += amount;
>          return true;
>      }
> }
>
> void TarjetaCredito::Pagar(double amount)
> {
>      currentBalance -= amount;
> }
>
> void TarjetaCredito::Resultados()
> {
>      Console::Write("Número de Cuenta");
>      Console::Writeline(numCuenta);
>
>      Console::Write("Balance Actual");
>      Console::Writeln(currentBalance);
> }
>
> Y el de el archivo de cabecera TarjetaCredito es el siguiente:
>
> class TarjetaCredito
> {
>       public:
>              bool HacerCompra(double amount);
>              void Pagar(double amount);
>              void Resultados();
>       private:
>               long numCuenta;
>               double currentBalance;
>               double creditLimit;
> }
>
> Podrían decirme en qué estoy mal? como digo, según el libro con eso basta
> para que el programa se compile pero me dan errores en las primeras lineas
> de include. Se supone que el programa debería ejecutar las funciones miembro
> de la clase TarjetaCredito y darme mal los datos de todas las variables
> miembro privadas ya que nunca las inicialicé y toman cualquier valor que
> esté en la memoria donde se encuentra el obejeto verdad?
>
> Otras preguntas:
>
> Qué es API? Sé que es Application Programming Interface pero podrían darme
> ejemplos?
>
> ¿Cómo hago una clase administrada? En Visual Studio es con _gc antes del
> nombre de la clase, en todos los compiladores es igual?
>
> ¿La clase administrada me sirve para que los objetos se eliminen solos
> cuando ya no se necesiten? También sé que se crean en el CLR (Common
> Language Runtime) en vez de crearse en la pila y por tanto se tienen que
> crear objetos primero definiendo un puntero para poder almacenar la
> dirección de memoria del objeto.
>
> ¿Cómo creo una clase no administrada? ¿Con _value antes del nombre de la
> clase? ¿Es igual para todos los compiladores?
>
> ¿Un puntero puede almacenar otro puntero? ¿En las clases administradas se
> supone que al crear un objeto se crea en tiempo de ejecución y en realidad
> devuelve un puntero que almacenamos en otro puntero?
>
> Ojalá y puedan ayudarme. Saludos desde México ;)
>
>
> --------------------------
> | = David Reza = |
>
> ------------------------------
>
>
>
>


-- 
| = David Reza = |
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061226/71bb23c2/attachment.html>


Más información sobre la lista de distribución Cconclase