C/Visual C - Acceder a un char[] en una clase

 
Vista:

Acceder a un char[] en una clase

Publicado por Miguel Espinoza (34 intervenciones) el 09/03/2005 02:47:43
hola!
este es mi problema: Necesito un char[] publico en una clase para poder cambiarlo en tiempo de ejecucion (siempre por el mismo tamagno, NO es un vector dinamico). pero el VisualC++ 6 me tira un error (error LNK2001: unresolved external symbol "public: static char * Contador::PerfilEnUso" (?PerfilEnUso@Contador@@2PADA))
Este es mi codigo:

-------------------------
//contador.h
#include <fstream.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <windows.h>

/*
Opciones del menu y forma de usar:
1. El usuario debe crear un Perfil antes de poder trabajar
2. Luego de haber creado su perfil el usuario puede agregar gastos y agregar ingresos y mostrar
el estado de la cuenta.

Abrir Perfil del Usuario
-Abre el archivo y al final del mismo agrega el codigo de inicio de sesio 9IS9

Cerrar Perfil del Usuario
-Abre el archivo

*/

class Contador
{

public:
static void CrearPerfil(char b[]); //Crea un perfil de usuario
static void BorrarPerfil(char c[]);//Borra un Perfil de usuario

void CerrarPerfil(); //Cierra el perfil, permite abrir otro perfil.
void AgregarGasto(int); //Yo ingreso un gasto realizado.
void AgregarIngreso(int); //Yo ingreso una entrada de dinero.
void MostrarEstado(); //Me dice cuanta plata he gastado/tengo.
void CalcularEstado(); //Calcula si he gastado mas de lo que he ganado.
void AbrirPerfil(); //Abre un perfil para trabajar
static void Menu();
static char PerfilEnUso[20];

private:
int Ingresos[50];


};

void Contador::CrearPerfil(char a[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
system("cls");
printf ("Verificando duplicacion del perfil: %s.\n", a);
hFind = FindFirstFile(a, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{

cout << "El perfil aun no existe.\nProcedo a crearlo:\n";
ofstream Perfil(a);
Perfil.close();
cout << "....\nPerfil creado exitosamente!\n\n";

}
else
{
cout << "Imposible crear el nuevo perfil, el nombre ya existe.\n";
FindClose(hFind);

}

}


void Contador::BorrarPerfil(char c[])
{

system("cls");
cout << "Usted esta a punto de borrar " << c << ".\nEsta segur@?\n";
char Comprobar;
cout << "Escriba 's' para Si | Escriba 'n' para No";
cin >> Comprobar;
if (Comprobar == 's')
{
if ( remove(c) == -1)
perror ("\nHubo un problema y el perfil NO se borro\n");
else ( puts("\nPerfil exitosamente borrado\n"));
}

}//Contador::BorrarPerfil

void Contador::Menu()
{
// system("cls");

for (int i = 0; i < 20; i++){
PerfilEnUso[i] = '\0';
}

cout << "\t-Menu-\n";
cout << "1.Abrir Perfil de usuario\n";
cout << "2.Crear Perfil de usuario\n3.Borrar Perfil\n";

int Men;
cin >> Men;

switch(Men)
{
case 1:
cout << "entrale el nombre";
//char AbrirPerfil[11];
// cin.getline(PerfilEnUso, 10);//AbrirPerfil,10);

cin >> PerfilEnUso;

break;
case 2: char Nombre[10];
cout << "Crear Perfil.\n Escriba un nombre para el nuevo perfil (Maximo 10 caracteres)\n";
cin.getline(Nombre,10);// >> Nombre;
//cin.getline(Nombre,10);
Contador::CrearPerfil(Nombre);
Contador::Menu();
break;
case 3:char NombreBorrar[10];
cout << "Que perfil desea borrar?\n";
cin.getline(NombreBorrar,10);// >> NombreBorrar;
//cin.getline(NombreBorrar,10);
Contador::BorrarPerfil(NombreBorrar);
Contador::Menu();
break;
}//switch

}
-------------------------

como puedo arreglar este asunto????
muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Acceder a un char[] en una clase

Publicado por chuidiang (677 intervenciones) el 09/03/2005 08:38:55
Hola:

Los atributos estaticos de las clases hay quep ponerlos también en el .cpp, además de en el .h, si no dan el error que te muestra. En el .cpp hay que poner esto (puede que te ponga mal la sintaxis, pero supongo que no te cosatará corregirla):

char Contador::PerfilEnUso[20];

Se bueno.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Acceder a un char[] en una clase

Publicado por Miguel Espinoza (34 intervenciones) el 11/03/2005 06:00:56
hola de nuevo...
Pues que esto no ha solucionado el problema....he probado con 'static' y sin el en la declaracion y no funciona...
el .cpp me quedo asi:

// contador.cpp
#include "contador.h"
#include <stdlib.h>
#include <stdio.h>

static char PerfilEnUso[20];

int main()
{
Contador::Menu();
return 0;
}
// EOF contador.cpp

pero aun nada....NO borre' la declaracion en el .h, y luego si la borre y sigue tirando errores...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar