Error en clase circulo

Iniciado por andoporto, 6 Marzo 2015, 19:44 PM

0 Miembros y 1 Visitante están viendo este tema.

andoporto

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




ivancea96

Añade
Código (cpp) [Seleccionar]
#include "Circulo.h"

En el main.

eferion

otra cosa:

Código (cpp) [Seleccionar]
class Circulo
{
  // ...
  char *Color;
};


Con esa declaración de "Color"...

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
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.