Programación General > C/C++

 aplicacion de java a c++

(1/2) > >>

dunkelheit:
Hola bueno estoy q practico con una aplicacion que implemento en java de comparacion de puntos, todo bien me salio pero ahora quiero implementar el mismo programa pero en C++... aca les dejo mi proyecto en java.


--- Código: Text --- package prUegafigUras;public class pUnto {     private double x;    private double y;     public pUnto () { this.setX(0); this.setY(0);    }     public pUnto (double x, double y) {        this.setX(x);        this.setY(y);    }    public boolean equals (Object refo) {        if(refo instanceof pUnto){            pUnto otro = (pUnto)refo;            return((this.x==otro.x)&&(this.y == otro.y));        }        else return false;    }    public double getX () {        return x;    }    public void setX (double x) {        this.x = x;    }    protected double getY () {        return y;    }    public void setY (double y) {        this.y = y;    }    public String toString () {        return this.getClass().getSimpleName()+"["+ this.getX()+","+ this.getY()+"]";    }}  

--- Código: Text ---package prUegafigUras; public class Demo {    public static void main (String[] args) {        pUnto p1= new pUnto();        pUnto p3 = new pUnto(0,0);        if(p1.equals(p3))System.out.println("p1=p3");    }} 

Para c++ estoy usando dev c++ 4.9, entonces cree mi proyecto con mi fichero.h y mi cpp


--- Código: Text --- using namespace std; class punto {  private:  double x;            double y;      public:           punto();         punto(double x,double y);         bool equals(const punto& refo);           private:          void setX(double x);          void setY(double y);  protected:          double getY();          double getX();                };bool punto::equals(const punto &refo){     //const punto* prefo = dynamic_cast<const punto*>(&refo);     punto otro =   (punto) otro;     return ((this->x == otro.x) && (this->y == otro.y));} punto::punto() {     this->setX(0);     this->setY(0);} punto::punto(double x,double y) {     this->setX(x);     this->setY(y);               } double punto::getX(){          return x;          }  void punto::setX(double x){          this->x = x ; } double punto::getY () {        return y;}void punto::setY (double y) {          this->y = y ;}  
main.cpp


--- Código: Text ---#include <cstdlib>#include <iostream>#include "punto.h"  int main(){    int h;    punto h1;    punto* p1 = new punto();    punto* p2 = new punto(0,0);       //if(p1->equals(p2)){} }   
el problema es en comparar p1 con equals p2 y ahi recien imprimir si son iguales o no .... como lo haria en c++ ?? espero que me puedan ayudar. gracias de antemano

Eternal Idol:
Podes sobrecargar el operador == y entonces hacer un comparacion (p1 == p2).

dunkelheit:
hola gracias por responder pero al hacer

pero en el metodo equals  

bool punto::equals(const punto &refo){
     //const punto* prefo = dynamic_cast<const punto*>(&refo);
     punto otro =   (punto) otro;
     return ((this->x == otro.x) && (this->y == otro.y));
}

esto no es la sobrecarga ?? o como seria no entiendo mucho  porque recien me inicio en poo.. espero me puedas ayudar .gracias

Eternal Idol:
No existe ese metodo en C++ por eso en su lugar podes sobrecargar el operador ==, mejor consegui un libro de C++, asi se te va a hacer mas facil.

r0d:
Hola,

Como lo dice Eternal Idol, el mejor es utilizar el oprador ==.
Aqui esta un ejemplo sencillisimo de una clase punto:

--- Código: Text ---#include <iostream>using namespace std; struct Punto{    Punto( int px = 0, int py = 0 ) : x(px), y(py) {} //constructor    int x;    int y;    bool operator == ( const Punto & pt ) const { return ( x==pt.x && y==pt.y ); } //sobrecarga del operador ==}; int main(){    Punto pt1; // mejor instanciar directamente, en la pila (sin hacer un new)    Punto pt2(2,3);    if ( pt1 == pt2 )        cout << "1" << endl;     pt1.x=2;    pt1.y=3;    if ( pt1 == pt2 )        cout << "2" << endl;        cout << "end" << endl;    cin.get();    return 0;} 

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa