bueno, mi problema es que tengo declarada una clase llamada 'complejo', con dos atributos privados, 'real' e 'imaginario', con sus constructores y metodos, después tengo instanciado una plantilla de tipo 'vector', declarado un 'iterador' y en el main creo 3 objetos de la clase complejo, con unos valores que les he pasado en el constructor, despues los añado en el vector, miro el tamaño del vector y me dice que tengo 3 elementos, pero cuando hago un for desde el inicio del vector hasta el final, me da un error de compilacion cuando intento acceder al vector con el iterador para mostrarlo en pantalla.
voy a dejar el código completo y si pueden ayudarme lo agradeceria, la verdad es que estuve probando casi de todo, y no me funciono nada. Con enteros si que funciona, con datos de un strutc tambien funciona, ya que sus atributos son públicos, pero me da error con la clase.
el codigo está escrito en el compilador Builder c++, se que muchas veces no sigue el estandar, pero creo que no es por eso, lo que creo es que algo debo de estar haciendo mal.
Código PHP:
#include <string.h>
#include <iostream>
#include <conio.h>
#include<vector>
using namespace std;
class complejo
{
private:
double real;
double imag;
public:
complejo(double real, double imag);
complejo (): real(0),imag(0){}
void establecer(double, double);
void imprimir();
void agregar(complejo);
void agregar(double, double);
};
complejo::complejo(double real, double imag)
{
this->real=real;
this->imag=imag;
}//fin del constructor con parametros
// metodos de la clase complejo
void complejo::establecer(double r, double i)
{
real=r;
imag=i;
}//fin de establecer
void complejo::imprimir()
{
cout << "el numero es "<< real << " + " << imag << "i" << endl;
}//fin de imprimir
void complejo::agregar(complejo a)
{
real=real+a.real;
imag=imag+a.imag;
}//fin de agregar
void complejo::agregar(double a, double b)
{
real= real + a;
imag= imag + b;
}
int main(int argc, char* argv[])
{
complejo c1,c2,c3;
vector<complejo>miComplejo;
vector<complejo>::iterator it;
c2.establecer(2,1);
c1.establecer(3,3);
c3.establecer(4,6);
c1.imprimir();
c2.imprimir();
c3.imprimir();
miComplejo.push_back(c1);
miComplejo.push_back(c2);
miComplejo.push_back(c3);
cout << miComplejo.size();
for (it=miComplejo.begin();it!=miComplejo.end();it++)
{
cout << (*it)->imprimir() << endl;
}
return 0;
}//fin del main