Hola gente, no encuentro el error, me dice "Circulo was not declared in this scope", pero creo que declare todo
main.cpp
#include <iostream>
using namespace std;
int main()
{
//parametrizado
Circulo c1(10.5, 20.0, 1, "Rojo Intenso"),c2, c3;
c2 = c1--; // decrementa, si se puede, el diámetro
c3 = c2++; // incrementa, si se puede, el diámetro
Circulo c4 = c3++;
c4.CambiarColor("Amarillo patito flúo");
cout << c1 << c2 << c3 << (c4 = c3) << endl;
return 0;
}
Circulo.cpp
#include "Circulo.h"
#include <string.h>
using namespace std;
Circulo :: Circulo() //por defecto
{
x=0.0;
y=0.0;
diam=0;
strcpy(Color,"");
}
Circulo::Circulo(float x,float y,unsigned diam,char *Color) //parametrizado
{
this->x=x;
this->y=y;
this->diam=diam;
this->Color= Color;
}
Circulo::Circulo(const Circulo& obj) //por copia
{
this->x=obj.x;
this->y=obj.y;
this->diam=diam;
this->Color=Color;
}
Circulo.h
#ifndef CIRCULO_H
#define CIRCULO_H
#include <iostream>
using namespace std;
class Circulo
{
public:
Circulo();
Circulo(float x,float y,unsigned diam,char *Color);
Circulo(const Circulo& obj);
private:
float x,y;
unsigned diam;
char *Color;
};
#endif // CIRCULO_H
otra cosa:
class Circulo
{
// ...
char *Color;
};
Con esa declaración de "Color"...
Circulo::Circulo() //por defecto
{
strcpy(Color,"");
}
Esa copia va a fallar... Color no apunta a ninguna dirección de memoria válida.
Y esta otra asignación:
Circulo::Circulo(float x,float y,unsigned diam,char *Color) //parametrizado
{
this->Color= Color;
}
Puede darte problemas, ya que los dos char* apuntan al mismo sitio... si modificas una de las dos cadenas la otra también va a cambiar:
int main( )
{
char cad1[10];
strcpy( cad1, "Test" );
Circulo circulo( 1, 2, cad );
strcpy( cad1, "Hola" );
std::cout << cad1 << std::endl;
std::cout << circulo.Color << std::endl; // Pon Color en el public para que esto compile.
}
Y lo mismo con el constructor copia. No es un fallo como tal pero te puede dar problemas.
Un saludo.