• Jueves 31 de Julio de 2025, 23:26

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - solarin

Páginas: 1 [2]
26
C/C++ / Re: Vectores En Funciones
« en: Lunes 21 de Agosto de 2006, 16:06 »
gracias, usare un parametro para el tamaño.

27
C/C++ / Vectores En Funciones
« en: Lunes 21 de Agosto de 2006, 15:33 »
Tengo declarada una funcion para calcular el checkSum de un vector:
Código: Text
  1.  
  2. int GetCheckSum(unsigned char *msg)
  3. {
  4.     //Calcular Checksum
  5.     return checkSum;
  6. }
  7.  
  8.  

Esta la funcion la llamo desde diferentes sitios, el problema es que cada vez le paso un vector de tamaño diferente:

Código: Text
  1.  
  2. void function1()
  3. {
  4. unsigned char msg[10];
  5. int checksum;
  6. msg[0] = 1;
  7. msg[1] = 23;
  8. .
  9. .
  10. .
  11. msg[9] = 4;
  12. checksum = GetCheckSum(unsigned char &msg);
  13.  
  14. }
  15.  
  16. void function2()
  17. {
  18. unsigned char msg[4];
  19. int checksum;
  20. msg[0] = 1;
  21. msg[1] = 23;
  22. .
  23. .
  24. .
  25. msg[3] = 4;
  26. checksum = GetCheckSum(unsigned char &msg);
  27. }
  28.  
  29. void function3()
  30. {
  31. unsigned char msg[55];
  32. int checksum;
  33. msg[0] = 1;
  34. msg[1] = 23;
  35. .
  36. .
  37. .
  38. msg[54] = 4;
  39. checksum = GetCheckSum(unsigned char &msg);
  40. }
  41.  
  42.  
  43.  


Lo cual me da el siguiente error al compilar:

m:\driver\cms_comm.cpp(487) : error C2664: 'getCheckSum' : cannot convert parameter 1 from 'unsigned char (*)[6]' to 'unsigned char *'

Como tengo que declarar la funcion o su llamada para poder pasar vectores de diferente tamaño?  Gracias.

28
C/C++ / Re: Puntero This
« en: Jueves 17 de Agosto de 2006, 16:44 »
Buena info del puntero this.. pero como solventar el problema con la herencia? <_<

29
C/C++ / Puntero This
« en: Jueves 17 de Agosto de 2006, 15:24 »
en el proyecto en el que estoy trabajando todas mis clases derivan de una clase llamada "Notifier"

Notifier, tiene un metodo para enviar mensajes:
Código: Text
  1.  
  2. void NotifyWarningMessage(Notifier* noti, Message msg)
  3.  
  4.  

Como que todas las clases derivan de notifier, para llamar esta clase siempre me pasan el puntero "this"


Código: Text
  1.  
  2. //tengo que enviar un warning
  3.  
  4. NotifyWarningMessage(this,msg);
  5.  
  6. //donde msg ya esta creado anteriormente
  7.  
  8.  


La idea es escribir en el log que clase ha enviado el warning, pero si hago lo siguiente:

Código: Text
  1.  
  2. void NotifyWarningMessage(Notifier* noti, Message msg){
  3.  
  4.      invokerClass = typeid( noti ).name();
  5.  
  6. //loggear el warning...
  7. }
  8.  
  9.  
  10.  


invokerClass siempre es del tipo madre, es decir del tipo Notifier.

Hay alguna manera para que a partir del puntero this pueda tener el nombre de la clase hijo?

Es decir:

Si tengo declarada una clase asi:


public ClasseTest : public Notifier


Que invokerClass sea ClasseTest y no Notifier.


Gracias.

30
C/C++ / Re: Problemas De Cast
« en: Jueves 17 de Agosto de 2006, 08:22 »
Muchas gracias por la explicacion y la solucion. Funciona perfectamente  :D

31
C/C++ / Problemas De Cast
« en: Miércoles 16 de Agosto de 2006, 12:09 »
Hola foro,

Tengo las siguientes clases:

-Component
-Client
-Logger

Component es una interfaz que usa el patron singleton:

Component.h
Código: Text
  1.  
  2. class Component
  3. {
  4. public:
  5.      virtual void Metodo1();
  6.      Component* GetInstance();
  7. private:
  8.       Component* _Instance;
  9.  
  10. };
  11.  
  12.  

Con su implementacion:

Component.cpp

Código: Text
  1.  
  2. #include "Component.h"
  3. #include "Logger.h"
  4.  
  5. Component* Component::GetInstance()
  6. {
  7.   if (_Instance == 0)
  8.   {
  9.     _Instance = new Logger;
  10.   }
  11.  
  12.   return _Instance;
  13.  
  14. }
  15.  
  16. void Component::Metodo1(){}
  17.  
  18.  


Logger es la clase que implementa esta interfaz:

logger.h
Código: Text
  1.  
  2. #include "Component.h"
  3. #include "Client.h"
  4.  
  5. class Logger : public Component
  6. {
  7.  
  8. public:
  9.  
  10.   Logger();
  11.   ~Logger();
  12.         void Metodo1();
  13.  
  14.  
  15.  

Con su implementacion:

Logger.cpp
Código: Text
  1.  
  2.  
  3. void Logger::Metodo1()
  4. {
  5.   //Alguna accion por hacer
  6. }
  7.  
  8.  

En ultimo lugar tengo la clase Client, que es la clase desde la se accedera a la interfaz "component"

Client.h

Código: Text
  1.  
  2.  
  3. #include "Logger.h"
  4. #include "Component.h"
  5.  
  6. class Client
  7. {
  8. public:
  9.  
  10.   Client();
  11.   ~Client();
  12.       void   EnviaMiss();
  13.  
  14. private:
  15.    
  16.     Logger *the_Component;
  17. };
  18.  
  19.  

Con su implementacion:


Client.cpp

Código: Text
  1.  
  2. #include "Client.h"
  3.  
  4. Client::Client()
  5. {
  6.     the_Component = new Logger;
  7. }
  8. Client::~Client()
  9. {
  10.     delete the_Component;
  11. }
  12. void Client::EnviaMiss()
  13. {
  14.      the_Component= the_Component->GetInstance();
  15.      the_Component->Metodo1();      
  16. }
  17.  
  18.  
  19.  
  20.  

El error me aparece al compilar cuando intento hacer el "GetInstance()" dentro del metodo EnviaMiss, con el siguiente mensaje:

Client.cpp : error C2440: '=' : no se puede realizar la conversión de 'Component *' a 'Logger *'
   La conversión de la base al elemento derivado requiere dynamic_cast o static_cast


Alguna recomendacion de que hacer con este error?

Gracias.

32
Patrones de Diseño / Decorator
« en: Jueves 10 de Agosto de 2006, 18:39 »
Hola,

Necesito informacion sobre el patron "decorator". alguna idea de alguna guia,url,etc interesante?

33
C/C++ / Re: Errores De Link
« en: Jueves 10 de Agosto de 2006, 17:21 »
sips.

Muchas gracias por la info.

34
C/C++ / Re: Errores De Link
« en: Jueves 10 de Agosto de 2006, 15:56 »
No era eso, pero gracias igualmente.

Al final he agregado como "Elemento existente.." la classe de la cual estoy derivando y estoy usando el metodo. Basicamente supongo que VSC++ crea asi una referencia para poder linkar correctamente al final.


Saludos.

35
Otros CLR / Heredar De Clases De Otros Proyectos
« en: Jueves 10 de Agosto de 2006, 12:00 »
Estoy usando Visual C++ .NET 2003. Tengo dentro de una solucion , distintos proyectos

Solucion 'mi_solucion' (x proyectos)
+----proyecto A
+----proyecto B
+----proyecto C
+----proyecto D
+----proyecto E


En proyecto A, tengo una clase que hereda de otra que esta en proyecto B, pero al llamar (desde A) a un metodo definido en la classe B, me salta el siguiente error:


BometController.obj : error LNK2019: símbolo externo "public: void __thiscall MessagesNotifier_Client::NotifyWarningMessage(class MessagesNotifier_Client *,class CMessage *)" (?NotifyWarningMessage@MessagesNotifier_Client@@QAEXPAV1@PAVCMessage@@@Z) sin resolver al que se hace referencia en la función "public: void __thiscall BometController::ComprobarPresion(float,float)" (?ComprobarPresion@BometController@@QAEXMM@Z)


BometController es la clase en el proyecto A y MessagesNotifier_Client la clase en el proyecto B. NotifyWarningMessage el metodo que al llamar salta el error LNK2019.


Tengo que configurar de alguna manera especial el entorno?


Gracias.

36
C/C++ / Errores De Link
« en: Jueves 10 de Agosto de 2006, 11:34 »
Estoy teniendo muchos problemas con el error LNK2019 en VC++ .NET 2003

Tengo una clase que deriva de otra:

//controller.h

#include MessagesNotifier_Client

class Controller : public MessagesNotifier_Client
{
public:

Controller();
~Controller();

void TempVerification(int a, int B);

};

//controller.cpp

Controller::Controller(){}
Controller::~Controller(){}

void Controller::TempVerification(int a, int B)
{
if ( abs(a - B) > 23 ){
NotifyWarningMessage("warning"); //ERROR LNK2019

}



El error de lNK2019 salta al llamar al metodo NotifyWarningMessage, definido en MessagesNotifier_Client.

Estoy usando Visual Studio .net 2003. una solucion con varios proyectos donde uno de ellos contiene a controller y el otro a MessagesNotifier_Client.


===Solution "BigTest"
== - proyecto A
|
------ Controller.h
------ Controller.cpp
== - proyecto B
|
------ MessagesNotifier_Client.cpp
------ MessagesNotifier_Client.h

Alguna idea de donde tengo el error? Es problema de la configuracion del visual?
Gracias por todo.

Páginas: 1 [2]