Ayuda con las clases.

Iniciado por Lotux5, 19 Enero 2013, 17:11 PM

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

Lotux5

Alguien me puede decir que le pasa a mi código. Cuando intento crear una variable de tipo Segmento me da error y no se por qué. Además de si alguien ve algo que no está del todo bien que lo diga.

#include <iostream>
#include <cmath>

using namespace std;

class Punto {
    private:
        double ejex, ejey;
    public:
        Punto();
        Punto(double x, double y);
        void SetP(double x, double y);
        double GetX();
        double GetY();
        double distanciacon(Punto b);
};

Punto::Punto(double x, double y)
{
    (*this).ejex=x;
    (*this).ejey=y;
}

Punto::Punto()
{
    (*this).ejex=0;
    (*this).ejey=0;
}

void Punto::SetP(double x, double y)
{
    (*this).ejex=x;
    (*this).ejey=y;
}

double Punto::GetX()
{
    return ejex;
}

double Punto::GetY()
{
    return ejey;
}

double Punto::distanciacon(Punto b)
{

    return sqrt(pow((*this).ejex-b.ejex,2)+pow((*this).ejey-b.ejey,2));
}

class Segmento{
    private:
        Punto p1, p2;

    public:
        Segmento(Punto punto1, Punto punto2);
        void SetS(Punto punto1, Punto punto2);
        Punto GetP1();
        Punto GetP2();
};


Segmento::Segmento(Punto punto1, Punto punto2)
{
    (*this).p1=punto1;
    (*this).p2=punto2;
}

void Segmento::SetS(Punto punto1, Punto punto2)
{
    (*this).p1=punto1;
    (*this).p2=punto2;
}

Punto Segmento::GetP1()
{
    return p1;
}

Punto Segmento::GetP2()
{
    return p2;
}

int main()
{
    Punto p1, p2;
    double x1, x2, y1, y2;
    cout << "Introduce un puntos: ";
    cin >> x1 >> y1;
    cout << "Introduce otro punto: ";
    cin >> x2 >> y2;

    p1.SetP(x1,y1);
    p2.SetP(x2,y2);

    cout << "Primer punto: " << "(" << p1.GetX() << "," << p1.GetY() << ")" << endl;
    cout << "Segundo punto: " << "(" << p2.GetX() << "," << p2.GetY() << ")" << endl;
    cout << "Distancia entre los dos puntos: " << p1.distanciacon(p2) << endl;


    Segmento s1;




Stakewinner00

lo he intentado compilar y en la line de
Segmento s1;

si le pones un parentesi
Segmento s1();

ya compila

te referías a ese error?

Lotux5

Sí ese era el error.
Ya probé tu solución y si, se compila el Segmento s1();
pero ahora el problema es que si intento hacer algo con ese s1 como por ejemplo asignarle dos puntos: s1.SetS(p1,p2) tampoco me los compila.
Por favor que alguien me ayude, tengo un examen el lunes.

Lotux5

Ademas, que vale que se compile pero igualmente no creo que este bien eso de poner un parentesis ya que es como si cada vez que quisieras introducir una variable tuvieras que poner double x();
o int y().

Supongo que el error esta en alguna parte del codigo pero no se donde ya que lo hice igual que la clase Punto y en cambio la clase Punto si me funciona. -.-"