[C con Clase] Error ejecucion - Patron Factory Method

Davidson, Steven srd4121 en njit.edu
Lun Jun 1 17:43:33 CEST 2020


Hola Programacion Matematica,

La instanciación se realiza en 'PizzaFactory::createPizza()' que está
definida en el fichero "PizzaFactory.cpp". Cada clase que representa cada
pizza tiene su constructor, pero vacío.

Espero haber aclarado la duda.

Steven


On Mon, Jun 1, 2020 at 10:58 AM Programacion Matematica <
progmath13 en gmail.com> wrote:

> Pero en que parte está la implementación de la función que crea la pizza,
> solo alcancé a ver el prototipo en la clase.
>
> El lun., 25 de may. de 2020 11:02 AM, Davidson, Steven <srd4121 en njit.edu>
> escribió:
>
>> Hola Jesse,
>>
>> Creé mi propio código de ejemplo para probar el código presentado. No
>> tuve muchos problemas. Luego, usé sus códigos fuente sin problemas. Intente
>> recompilar todo el proyecto y si lo está haciendo para la versión de
>> depuración (debug), cambie a la versión de lanzamiento (release).
>>
>> Espero que esto ayude.
>>
>> Steven
>>
>>
>> On Mon, May 25, 2020 at 10:26 AM jesse <jessesazo en yahoo.com> wrote:
>>
>>> Buenas a todos
>>>
>>> Estoy probando patrones. Estoy con el de creacion Factory Method y tengo
>>> un error
>>>
>>> Tengo la siguiente estructura
>>>
>>> IPizza <== PizzaFactory --> udemy-pddcl
>>> +-> DeluxePizza
>>> +-> HamAndMushroomPizza
>>> +-> HawaiianPizza
>>>
>>> He creado una clase virtual / interface: IPizza
>>>
>>> #ifndef IPIZZA_H_
>>> #define IPIZZA_H_
>>> class IPizza {
>>> public:
>>>       IPizza();
>>>       virtual ~IPizza();
>>>       virtual int getPrice() const = 0;
>>> };
>>> #endif /* IPIZZA_H_ */
>>>
>>> Esta interface es implementada por Deluxe, Hawaiian y HamMushroom Pizza,
>>> modificando el comportamiento en el metodo getPrice
>>>
>>> La clase PizzaFactory crea objetos de lo mencionado anteriormente, en
>>> funcion al parametro enumPizzaType
>>>
>>> class PizzaFactory {
>>> public:
>>>       enum enumPizzaType {
>>>           HamMushroom,
>>>           Deluxe,
>>>           Hawaiian
>>>       };
>>>       static unique_ptr<IPizza> createPizza(enumPizzaType ept) ;
>>> };
>>>
>>> Pero cuando se invoca a la creacion del tipo de pizza, la linea del cout
>>> que esta comentada, arroja un error del tipo "Segmentation fault (core
>>> dumped)"
>>>
>>> void creFactMeth_Pizza(PizzaFactory::enumPizzaType  ept)
>>> {
>>>       unique_ptr<IPizza> pizza;    // defino el objeto pizza
>>>       pizza = PizzaFactory::createPizza(ept); // dependiendo de
>>> parametro ept creo el tipo de piza
>>>
>>>       cout << "Price of " << ept ;    ok
>>>       //cout << " is " << pizza->getPrice();<<-- Error
>>>       cout << std::endl;
>>> }
>>>
>>> Agradecere mucho si alguien me puede ayudar.
>>>
>>> Uso Eclipse y CLion sobre linux. Adjunto fuentes
>>>
>>>
>>> Att
>>>
>>> Jesse
>>>
>>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20200601/5de276e1/attachment.html>


Más información sobre la lista de distribución Cconclase