[C con Clase] No me reconoce tipos de datos ni métodos estándar aunque pongo librerias

Steven Davidson srd4121 en njit.edu
Lun Abr 16 17:58:24 CEST 2012


Hola Redondo,

On 4/16/2012 9:29 AM, redondo.af wrote:
> Buenos días:
>
> Soy novato en esto del C++ y por lo que parece también bastante torpe
> :-D ...
> La cuestión es que al compilar un programita que me he creado me da
> un par de errores que no se como solucionar
>
>     'cin' : identificador no declarado
>      el operando izquierdo de '.ignore' debe tener class/struct/union
>
>
> Os pongo el contenido de los ficheros (lo he compilado tanto con el
> visual studio 2010 (c++) como con el Dev-C++.
>

Viendo el código que nos envías, hay muchas cosas que VC++ ha agregado 
por el tipo de proyecto que has elegido. Si quieres crear un programa 
estándar para la consola, sugiero eliminar lo de "stdafx.h" y lo de 
'_tmain()'. Si mal no recuerdo, puedes hacer esto eligiendo un proyecto 
vacío, por lo que tendrás que crear los ficheros y luego agregarlos al 
proyecto.  Si ya tienes los ficheros creados previamente, entonces sólo 
necesitas agregarlos al proyecto.

> ******************************************************************************

Veamos el código fuente.

> Fichero main al que he llamado PracticaED.cpp:
>
> // PracticaED.cpp: define el punto de entrada de la aplicación de consola.
> //
>
> #include "stdafx.h"
> #include<string>
> #include<iostream>
> #include<stdlib.h>
> #include<stdio.h>

Debes usar los nombres estándares para las bibliotecas que provienen de 
ANSI C:

#include <cstdlib>
#include <cstdio>

No entiendo por qué necesitas <cstdio> si ya tienes <iostream>. Es 
posible que por los problemas que estabas teniendo, decidiste usar <cstdio>.

> #include "ClsComun.cpp"

Esto es incorrecto. La idea es incluir el fichero de cabecera, que en 
este caso es "ClsComun.h". El fichero fuente, "ClsComun.cpp", se 
compilará por separado y se enlazará con la compilación de este fichero 
fuente, "PracticaED.cpp", para generar el fichero ejecutable.

> using namespace std;
>

[CORTE]	

> ********************************************************************************
>
> Fichero ClsComun.cpp
>
>
> #include "stdafx.h"
> #include "ClsComun.h"
>

Aquí está al problema. Usas 'cin' en este fichero fuente, pero no 
incluyes su definición, que está en <iostream>. Incluye este fichero de 
cabecera:

#include <iostream>

using std::cin;  // Sólo nos interesa 'cin'

>
> ClsComun::ClsComun()
> {
> }
>
> ClsComun::~ClsComun()
> {
> }
> void ClsComun::ignorar()
> {
>      cin.ignore();
> }
>


Espero haber aclarado las dudas.

Steven





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