Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

UNA CLASE,MUCHOS FORMULARIOS

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: UNA CLASE,MUCHOS FORMULARIOS Responder citando

Hola,como estan? yo cada vez mas enganchada con c++ builder,el cual es muy buen lenguaje de programacion,llevo solo 1 mes con el y en un mes mas tendre si dios quiere mi gestor de base de datos, y mucho se los debo a ustedes.
Tengo un problema con una clase,he definido una clase arbol en el unit1.h,el cual es mi formulario principal,puse como friend las funciones de esa clase en la definicion del form1,y estoy implementando las funciones en el unit1.cpp.El problema es que tengo otro formulario el cual necesita funciones de la clase arbol y ya trate de ponerlas como friend pero me dice que la clase arbol no esta definida y si la defino de vuelta en el unit4.h,me dice que hay una multiple declaracion para esa clase,realmente necesito que esa clase la usen casi todos los formularios,como hago???????????.
Les adjunto codigo para que se les aclare el panorama

en unit1.h la defino y la incluyo en la definicion del form1

class arbol
{
private:
FILE *cabecera,*archivo;
long raiz,pos,padre,hijo;
char *nombrearch,*nombrecab;
public:
arbol(){raiz=-1;pos=0;padre=0;hijo=0;nombrearch=NULL;nombrecab=NULL;cabecera=NULL;archivo=NULL;}
arbol(char *indi,char *indi2);
void alta(indices index,AnsiString tabla);

};

class TForm1 : public TForm
{
__published: // IDE-managed Components

aca los componenetes

private:
friend void arbol::arbol();
friend void arbol::arbol(char *indi,char *indi2); // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall ValidarCadena(char &Key);
void __fastcall ValidarNumero(char &Key);
void __fastcall ValidarReal(char &Key);
void __fastcall renombrarindice(AnsiString viejo,AnsiString nuevo,char *dire);
void __fastcall eliminarindice(AnsiString nombre,char *direc);
};


en unit1.cpp

arbol::arbol(char *indi,char *indi2)
{
nombrearch=new char[strlen(indi)+1];
nombrecab=new char[strlen(indi2)+1];
strcpy(nombrearch,indi);
strcpy(nombrecab,indi2);
archivo=fopen(nombrearch,"wb");
cabecera=fopen(nombrecab,"wb");
if (archivo==NULL){ShowMessage("Error de Apertura");}
if (cabecera==NULL){ShowMessage("Error de Apertura");}
fclose(archivo);
fclose(cabecera);
}

y aqui tambien defino variables tipo arbol y andan perfecto

y en unit4.h lo que tengo es esto

class TForm4 : public TForm
{
__published: // IDE-managed Components
aca los componentes
private:
friend void arbol::alta(indices index,AnsiString tabla);
friend void arbol::arbol();
// User declarations
public: // User declarations
__fastcall TForm4(TComponent* Owner);
void __fastcall ValidarCadena(char &Key);
void __fastcall ValidarNumero(char &Key);
void __fastcall ValidarReal(char &Key);


};

aca me salta el error diciendo que arbol no es una clase definida o algo asi,les aclaro que en unit4.cpp tengo incluido unit1.h.
Muchisimas Gracias!!!!!!!!!!!!!!!!!!!!!!!!!
_________________
Dulci
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Veo que has leído mi libro de arriba abajo pero bueno...
Lo primero que no entiendo es porque no defines el Class arbol con una cabecera independiente y lo incluyes en las Unit que lo necesiten, lo segundo es que no se porque abusas de las funciones friend puediendo heredar...con mas razón todavía si estas sobreescribiendo funciones como en el Unit4.hpp

class TForm4 : public TForm
{
__published: // IDE-managed Components
aca los componentes
private:
friend void arbol::alta(indices index,AnsiString tabla);
friend void arbol::arbol();
// User declarations
public: // User declarations
__fastcall TForm4(TComponent* Owner);
void __fastcall ValidarCadena(char &Key);
void __fastcall ValidarNumero(char &Key);
void __fastcall ValidarReal(char &Key);


};


Creo que con eso se solucionaria tu probemilla
Cuando incluyas la clase arbol crea el objeto y trabaja con el de la misma manera que los BitBtn están en otra clase, por cierto esta idea es más reutilizable que incluirla en el Unit1 y que el compilador no sepa donde buscar y/o se vuelva medio loco
Volver arriba
Mensaje    Asunto: No da resultado Responder citando

Disculpa,pero nose de que libro se trata,lo que me diste en codigo no da resultado,ya lo habia probado y el error que me da es este [C++ Error] Unit4.h(41): E2090 Qualifier 'arbol' is not a class or namespace name.
Disculpa,pero no tengo mucho tiempo trabajando en c builder y sinceramente nose como definir un .h aparte,asi que si podrias decirme te lo agradezco.
_________________
Dulci
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.