Foros del Web » Programación » C/C++ »

como se usa pushback de la stl con una clase?

Estas en el tema de como se usa pushback de la stl con una clase? en el foro de C/C++ en Foros del Web. Uso c++ builder 2010 y tengo una clase Producto en el archivo cproductos , en otro archivo he creado una clase Mesa que es la ...
  #1 (permalink)  
Antiguo 05/01/2012, 18:56
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 142
Antigüedad: 2 años, 9 meses
Puntos: 23
como se usa pushback de la stl con una clase?

Uso c++ builder 2010 y tengo una clase Producto en el archivo cproductos, en otro archivo he creado una clase Mesa que es la siguiente:


ARCHIVO "cmesa.h":
Código C++:
Ver original
  1. //---------------------------------------------------------------------------
  2.  
  3. #ifndef cmesaH
  4. #define cmesaH
  5. #include "cproductos.h"
  6. #include <vector>
  7.  
  8. using namespace std;
  9. //---------------------------------------------------------------------------
  10.  
  11. class Mesa{
  12.  
  13. private:
  14.  
  15. UnicodeString __Mozo;
  16.  
  17. vector<Producto> *__Consumo;
  18. vector<int> __Cantidad;
  19.  
  20. int __Numero, __Monto;
  21.  
  22. public:
  23.  
  24.    __property int Monto= {read= __Monto, write= __Monto};
  25.    __property int Numero= {read= __Numero, write= __Numero};
  26.  
  27.    Mesa(int Numero, UnicodeString Mozo);
  28.  
  29.    bool Agregar(Producto *__Producto);
  30.    bool Quitar(Producto *__Producto);
  31.  
  32.    vector<Producto>::iterator Buscar(Producto *__Producto);
  33.  
  34.  
  35. };
  36.  
  37. //---------------------------------------------------------------------------
  38. #endif

recien la creo a la clase, asi que pongo toda la implementacion

ARCHIVO cmesa.cpp

Código C++:
Ver original
  1. //---------------------------------------------------------------------------
  2.  
  3.  
  4. #pragma hdrstop
  5.  
  6. #include "cmesa.h"
  7. //---------------------------------------------------------------------------
  8.  
  9. Mesa::Mesa(int Numero,UnicodeString Mozo){
  10.  
  11. this->__Numero= Numero;
  12. this->__Mozo= Mozo;
  13. this->__Monto= 0;
  14. }
  15.  
  16. bool Mesa::Agregar(Producto *__Producto){
  17.  
  18. if (this->Buscar(__Producto) != NULL){
  19.  
  20. this->__Consumo->push_back(__Producto);
  21. this->__Cantidad.push_back(1);
  22.  
  23. return 1;
  24. }else return 0;
  25.  
  26. return 0;
  27. }
  28.  
  29. //---------------------------------------------------------------------------
  30.  
  31. #pragma package(smart_init)


el error me lo da en el archivo .cpp en la linea 20, me da los siguientes 2 errores:

-[BCC32 Error] cmesa.cpp(20): E2064 Cannot initialize 'const Producto &' with 'Producto *'
-[BCC32 Error] cmesa.cpp(20): E2342 Type mismatch in parameter '_Val' (wanted 'const Producto &', got 'Producto *')



Generalmente me gusta aprender de mis errores, buscar la solucion por mi mismo, pero esto me supera .

Igualmente voy a tratar de solucionar el problema o buscar otra logica, pero para el trabajo final me han pedido que utilice la libreria STL en alguna clase y me conviene utilizarla mas en esta. De ultima hago una lista enlazada y seran unos puntos menos en el trabajo


Saludos y seguire intentando.
  #2 (permalink)  
Antiguo 05/01/2012, 20:03
 
Fecha de Ingreso: junio-2008
Mensajes: 651
Antigüedad: 6 años, 3 meses
Puntos: 53
Respuesta: como se usa pushback de la stl con una clase?

Un arreglo de punteros no es lo mismo que un puntero a un arreglo.
Consumo es un puntero a un arreglo de objetos, tal vez querias decir que Consumo fuera un arreglo de punteros a objetos, pues cuando insertas en Consumo estas insertando un puntero.
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 05/01/2012, 20:32
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 142
Antigüedad: 2 años, 9 meses
Puntos: 23
Respuesta: como se usa pushback de la stl con una clase?

gracias CalgaryCorpus por la explicacion, me ayudaste a solucionar.

Cambie la linea 17 del archivo .h teniendo en cuenta lo que me dijiste por lo siguiente:

Código C++:
Ver original
  1. vector<Producto*> __Consumo;


me cuesta un poco la STL

Saludos y gracias

Etiquetas: clase, stl, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:02.
SEO by vBSEO 3.3.2