Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: andoporto en 6 Marzo 2015, 19:44 pm



Título: Error en clase circulo
Publicado por: andoporto en 6 Marzo 2015, 19:44 pm
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;
Código:
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

Código:
#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

Código:
#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




Título: Re: Error en clase circulo
Publicado por: ivancea96 en 6 Marzo 2015, 19:47 pm
Añade
Código
  1. #include "Circulo.h"

En el main.


Título: Re: Error en clase circulo
Publicado por: eferion en 6 Marzo 2015, 20:20 pm
otra cosa:

Código
  1. class Circulo
  2. {
  3.  // ...
  4.  char *Color;
  5. };

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

Código
  1. Circulo::Circulo() //por defecto
  2. {
  3.    strcpy(Color,"");
  4. }

Esa copia va a fallar... Color no apunta a ninguna dirección de memoria válida.

Y esta otra asignación:

Código
  1. Circulo::Circulo(float x,float y,unsigned diam,char *Color) //parametrizado
  2. {
  3.    this->Color= Color;
  4. }

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
  1. int main( )
  2. {
  3.  char cad1[10];
  4.  strcpy( cad1, "Test" );
  5.  
  6.  Circulo circulo( 1, 2, cad );
  7.  
  8.    strcpy( cad1, "Hola" );
  9.  
  10.    std::cout << cad1 << std::endl;
  11.    std::cout << circulo.Color << std::endl; // Pon Color en el public para que esto compile.
  12. }

Y lo mismo con el constructor copia. No es un fallo como tal pero te puede dar problemas.

Un saludo.