Al grano...
Tengo la siguiente clase...
Código C++:
Ver original
#ifndef LIBRERIA2_H #define LIBRERIA2_H class Libreria { public : Libreria() {} ~Libreria() {} // Agrego unos libros al catalogo void addBooks(); // Muestro los libros comprados void boughtBooks(); // Muestor el catalogo void catalogue(); // Compro un libro... bool buyBook(int index); // Arriendo un libro bool rentBook(int index); // Devuelvo un libro bool returnBook(int index); private : std::vector<Libro> vBookCatalogue; std::vector<Libro> vBookBought; }; #endif /* LIBRERIA2_H */
Luego en el main, tengo el siguiente código :
Código C++:
Ver original
//#include <cstdlib> #include <iostream> #include <vector> #include "Libro.h" #include "Libreria2.h" using namespace std; /** * Agrego unos libros en duro */ void Libreria::addBooks() { Libro lib; lib.setLibAutor("Vargas Llosa"); vBookCatalogue.push_back(lib); cout << vBookCatalogue.size(); vector<Libro> v; v.push_back(lib); cout << v.size(); } /* * */ int main(int argc, char** argv) { Libreria * libreria = new Libreria; libreria->addBooks(); delete libreria; return 0; }
Si imprimo el .size() del vector que declaré como privado en la clase (vBookCatalogue), me imprime 4294966094, lo cual es una brutalidad. En cambio, si imprimo el .size() de la variable que declaré como local en el método addBooks(), me imprime 1, lo que es correcto.
Siguiendo las referencias del método push_back y size, debería estar todo bien, y al parecer lo está... compila y ejecuta sin problemas, pero al debuggear, tira un error un tanto extraño.
Al debuggear, usando NetBeans 6.9 y MingW, me tira al archivo stl_construct.h, en la línea 81, donde se encuentra este código :
Código C++:
Ver original
/** * @if maint * Constructs an object in existing memory by invoking an allocated * object's constructor with an initializer. * @endif */ template<typename _T1, typename _T2> inline void _Construct(_T1* __p, const _T2& __value) { // _GLIBCXX_RESOLVE_LIB_DEFECTS // 402. wrong new expression in [some_]allocator::construct ::new(static_cast<void*>(__p)) _T1(__value); // Línea 81 }
Y los mensajes dicen :
Variables :
Error Variables
Callstack :
Error Callstack
La verdad no se que puede ser, y el error no es suficientemente claro como para poder buscarlo en google (y lo hice, aunque pude no haberlo hecho bien).
Espero me puedan ayudar. Como saben, no espero la solución escrita ni mucho menos, pero se agradecería una explicación, o algún link, o algo, no sé
Bueno, gracias. Saludos.