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
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


0