Estoy haciendo un programa que consiste en una biblioteca que puede almacenar una serie de items, que son guardados en un vector (ficha). La clase CFicha es abstracta y es la clase base para todas las demás (libros, revistas, etc...). Aquí les dejo la clase CBiblioteca:
Código
Mi problema se da en el método 'operator=' y 'AnyadirFicha()', los cuales son definidos así:
class CBiblioteca
{
vector<CFicha *> ficha;
public:
//basico
CBiblioteca();
CBiblioteca(const CBiblioteca&);
~CBiblioteca();
CBiblioteca operator=(const CBiblioteca&);
CFicha* operator[](unsigned);
//funciones
void AnyadirFicha(CFicha&);
int BuscarFicha(const string) const;
//eliminar siguiente ?
bool EliminarFicha(unsigned);
bool MostrarFicha(unsigned);
bool MostrarBiblioteca(void);
};
Código
y
CBiblioteca CBiblioteca::operator=(const CBiblioteca& bib)
{
//primero vaciamos la matriz
for(int i = 0; i < ficha.size(); i++)
delete ficha[i];
ficha.clear();
//ahora copiamos los elementos
for(int i = 0; i < bib.ficha.size(); i++)
ficha.push_back(new CFicha(*(bib.ficha[i])));
return *this;
}
Código
ambas me dan los mismos dos errores:
void CBiblioteca::AnyadirFicha(CFicha& ficha)
{
ficha.push_back(new CFicha(ficha));
}
'class CFicha' has no member named 'push_back'
invalid new-expression of abstract class type 'CFicha'
pero no entiendo por que interpreta que push_back es un método de CFicha y no de la clase vector, así como mi otra duda de si se puede crear un objeto abstracto con el operador new.


 
  




 Autor
 Autor
		



 En línea
									En línea
								







 
						