[C con Clase] ayuda con un template
omar mendoza
omar.p9 en gmail.com
Dom Jun 19 10:15:28 CEST 2011
hola a todos, tengo una clase template de la siguiente manera
#ifndef _Map_
#define _Map_
#include <map>
#include <utility>
#include <string>
using namespace std;
template <class T>
// Represents a dictionary
// key --> value
// @author Omar Mendoza
// @date May 2011
// @version 0.0.1
class Map {
protected:
/// STL dictionary
map<string, T *> var;
public:
//aquí van varios métodos tipo get y set
}
#endif
y la ocupo de la siguiente forma
#ifndef __GenUnitsXML__
#define __GenUnitsXML__
#include <string>
#include "Map.hpp"
#include "GenericUnit.hpp"
#include "SpecificUnit.hpp"
#include "LinearFunc.hpp"
#include "Function.hpp"
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
using namespace std;
class GenUnitsXML {
protected:
Map<GenericUnit> *generics;
Map<SpecificUnit> *specifics;
Map<SpecificUnit> *sysunits;
public:
// los métodos q me interesan son estos tres
// como ven son los get de cada atributo
Map<GenericUnit> *getGenerics();
Map<SpecificUnit> *getSpecifics();
Map<SpecificUnit> *getSysUnits();
}
#endif
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
Map<SpecificUnit> *sp = new Map<SpecificUnit>;
sp = units->getSpecifics();
donde units es
GenUnitsXML *units = new GenUnitsXML;
usando valgrind me dice lo siguiente
33.800000
0.304800
en factorTO
despues de Map
tam ma 0
==6523== Use of uninitialised value of size 8
==6523== at 0x401CFE: GenUnitsXML::getSpecifics() (GenUnitsXML.cpp:16)
==6523== by 0x4060CB: Units::factorTo(char const*) (Units.cpp:19)
==6523== by 0x406E9C: main (main.cpp:10)
==6523==
==6523== Invalid read of size 8
==6523== at 0x401CFE: GenUnitsXML::getSpecifics() (GenUnitsXML.cpp:16)
==6523== by 0x4060CB: Units::factorTo(char const*) (Units.cpp:19)
==6523== by 0x406E9C: main (main.cpp:10)
==6523== Address 0x8 is not stack'd, malloc'd or (recently) free'd
==6523==
no sé por qué hay un error en getSpecifics(), pues solo es un método q
devuelve un atributo, es decir, es un get.
Alguien que me pueda orientar??
Saludos y gracias
--
Omar Jonathan Mendoza Bernal
"Las cicatrices nos recuerdan que el pasado fue real" Dr. Lecter en Dragón
Rojo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110619/d42f1871/attachment.html>
Más información sobre la lista de distribución Cconclase