hola a todos, tengo una clase template de la siguiente manera<div><br></div><div><div>#ifndef _Map_</div><div>#define _Map_</div><div><br></div><div>#include <map></div><div>#include <utility></div><div>#include <string></div>
<div><br></div><div>using namespace std;</div><div><br></div><div>template <class T></div><div><br></div><div>// Represents a dictionary</div><div>// key --> value</div><div>// @author Omar Mendoza</div><div>// @date May 2011</div>
<div>// @version 0.0.1</div><div>class Map {</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>protected:</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">          </span>/// STL dictionary</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>map<string, T *> var;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>public:</div><div>               //aquí van varios métodos tipo get y set</div>
<div><br></div><div>}</div><div>#endif</div><div><br></div><div><br></div><div>y la ocupo de la siguiente forma</div><div><br></div><div><br></div><div><div>#ifndef __GenUnitsXML__</div><div>#define __GenUnitsXML__</div><div>
#include <string></div><div>#include "Map.hpp"</div><div>#include "GenericUnit.hpp"</div><div>#include "SpecificUnit.hpp"</div><div>#include "LinearFunc.hpp"</div><div>#include "Function.hpp"</div>
<div>#include <libxml/xmlmemory.h></div><div>#include <libxml/parser.h></div><div><br></div><div>using namespace std;</div><div><br></div><div>class GenUnitsXML {</div><div><br></div><div>protected:</div><div>
<br></div><div>    Map<GenericUnit> *generics;</div><div>    Map<SpecificUnit> *specifics;</div><div>    Map<SpecificUnit> *sysunits;</div><div><br></div><div>public:</div><div><br></div><div>   // los métodos q me interesan son estos tres</div>
<div>   // como ven son los get de cada atributo</div><div><br></div><div>    Map<GenericUnit> *getGenerics();</div><div><br></div><div>    Map<SpecificUnit> *getSpecifics();</div><div><br></div><div>    Map<SpecificUnit> *getSysUnits();</div>
</div><div><br></div><div>}</div><div><br></div><div>#endif</div><div><br></div><div>tal vez m falte sintaxis aquí para explicarles, pero el programa compila y al ejecutarlo sale "violación de segmento" al hacer lo siguiente en otra clase</div>
<div><br></div><div><div>         Map<SpecificUnit>  *sp = new Map<SpecificUnit>;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>  sp = units->getSpecifics();</div></div>
<div><br></div><div><br></div><div>donde units es </div><div><br></div><div>GenUnitsXML *units = new GenUnitsXML;</div><div><br></div><div>usando valgrind me dice lo siguiente</div><div><br></div><div><br></div><div><div>
33.800000</div><div>0.304800</div><div>en factorTO</div><div>despues de Map</div><div>tam ma 0</div><div>==6523== Use of uninitialised value of size 8</div><div>==6523==    at 0x401CFE: GenUnitsXML::getSpecifics() (GenUnitsXML.cpp:16)</div>
<div>==6523==    by 0x4060CB: Units::factorTo(char const*) (Units.cpp:19)</div><div>==6523==    by 0x406E9C: main (main.cpp:10)</div><div>==6523== </div><div>==6523== Invalid read of size 8</div><div>==6523==    at 0x401CFE: GenUnitsXML::getSpecifics() (GenUnitsXML.cpp:16)</div>
<div>==6523==    by 0x4060CB: Units::factorTo(char const*) (Units.cpp:19)</div><div>==6523==    by 0x406E9C: main (main.cpp:10)</div><div>==6523==  Address 0x8 is not stack'd, malloc'd or (recently) free'd</div>
<div>==6523== </div></div><div><br></div><div>no sé por qué hay un error en getSpecifics(), pues solo es un método q devuelve un atributo, es decir, es un   get.</div><div>Alguien que me pueda orientar??</div><div>Saludos y gracias</div>
<div><br></div><br>-- <br><div>Omar Jonathan Mendoza Bernal</div>"Las cicatrices nos recuerdan que el pasado fue real" Dr. Lecter en Dragón Rojo <br>
</div>