Bueno lo he conseguido pero no se si es muy ortodoxo o no. Lo que he hecho es esto:
En TInt.h:
Código:
#ifndef Inth
#define Inth
//---------------------------------------------------------------------------
#include "THilo.h"
//---------------------------------------------------------------------------
//Declaracion de la clase
class TInt
{
public:
TInt(THilo *H);
~TInt();
AnsiString __fastcall toHex(int value);
AnsiString __fastcall toBin(int value);
private:
THilo *Hilo;
};
//---------------------------------------------------------------------------
#endif
En el TInt.cpp tengo esto:
Código:
#include "TInt.h"
TInt::TInt(THilo *H)
{
Hilo = H;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TInt::toHex(int value)
{
AnsiString retval = "";
__try{
if(Hilo != NULL)
retval = Hilo->FuncToHex(value);
}catch(...){
}
return retval;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TInt::toBin(int value)
{
AnsiString retval = "";
__try{
if(Hilo != NULL)
retval = Hilo->FuncToBin(value);
}catch(...){
}
return retval;
}
En el TPrueba.h tengo esto:
Código:
#include <vcl.h>
#ifndef PRUEBAH
#define PRUEBAH
#include "TInt.h"
class TPrueba
{
public:
TPrueba();
~TPrueba();
void __fastcall IniciarHilo(void);
TInt *Int;
private:
THilo *Hilo;
};
#endif
En el TPrueba.cpp tengo esto:
Código:
TPrueba::TPrueba()
{
}
//---------------------------------------------------------------------------
TPrueba::~TPrueba()
{
delete Int;
Int = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TPrueba::IniciarHilo(void)
{
//Creo el hilo
Hilo = new THilo(true);
if(Hilo == NULL)
{
MessageBox(Application->Handle,
"No se ha podido crear el hilo correctamente.\n Cierre la aplicación e intentelo de nuevo.",
"Error",
MB_OK | MB_ICONERROR | MB_APPLMODAL);
}
else{
//Creo la otra clase
Int = new TInt(Hilo);
}
}
y en el Unit1.cpp tengo esto:
Código:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
try{
prueba = new TPrueba();
}
catch(...){
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(prueba->Int->toHex(100));
ShowMessage(prueba->Int->toBin(100));
}
Hilo no hace falta que lo ponga aquí porque el problema era acceder a el desde otra clase donde no estaba declarado y asi lo he podido solucionar ¿que os parece esta solucion? ¿chapuza? ¿correcta?