Programación General > C/C++
aplicacion de java a c++
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
[#] Página Siguiente
Ir a la versión completa