Como hacer una funcion que retorne un string?
hola, estoy recien empezando a programar en c++ y estoy haciendo una clase Vector2D donde tengo 2 archivos, un .h donde declaro las funciones y .cpp donde las implemento.
Vector2d.h
#include <string>
#include <iostream>
class Vector2D{
double x;
double y;
public:
Vector2D();
Vector2D(float,float);
void setX(double);
void setY(double);
double getX();
double getY();
Vector2D operator+(Vector2D);
Vector2D operator*(double);
Vector2D operator-(Vector2D);
double module();
Vector2D unitary();
string getDescription();
string toString();
};Vector2D.cpp
#include <math.h>
#include "Vector2D.h"
Vector2D::Vector2D(){
x=y=0;
}
Vector2D::Vector2D(float a, float b){
x=a;
y=b;
}
Vector2D Vector2D::operator+(Vector2D v){
if(v==NULL) return Vector2D vector(x,y);
else return Vector2D vector(x+v.x,y+v.y);
}
Vector2D Vector2D::operator*(double t){
return Vector2D vector(x*t,y*t);
}
Vector2D Vector2D::operator-(Vector2D){
if(v==NULL) return Vector2D vector(x,y);
eslse return Vector2D vector(x-v.x,y-v.y);
}
double Vector2D::module(){
return sqrt(x*x+y*y);
}
Vector2D Vector2D::unitary(){
return this*(1/module());
}
string Vector2D::getDescription(){
return "(x,y)";
}
string Vector2D::toString(){
return x+"."+y;
}
aca esta la salida luego de compilar
Error
no se que estoy haciendo mal.
- Inicie sesión o regístrese para enviar comentarios
- 770 lecturas


En principio lo que veo es que te falta un
#include <string>en el archivo cpp
Un par de cosillas:
- te recomiendo que x e y los pongas como miembros privados.
- ¿float o double? en el constructor los args los pones como float pero en la clase están declarados como double.
Además,
Vector2D Vector2D::operator+(Vector2D v){if(v==NULL) return Vector2D vector(x,y);
else return Vector2D vector(x+v.x,y+v.y);
}
En el caso de que v sea NULL, ¿por qué no devuelves this? Busca en internet información sobre "sobrecarga de operadores en C++".
por defecto la clase es privada
string Vector2D::toString(){return x+"."+y;
}
No pude ver exactamente cual era el error que mostraba el compilador, sim embargo creo
que la expresion x+"."+y es incorrecta. En todo caso si lo que quieres es mostrar el vector
como una string te recomiendo que hagas esto:
string Vector2D::toString(){char str[64];
sprintf(str, "(%f,%f)", x, y);
return str;
}
la solución de rcruz parece válida, sin embargo si quisieras utilizar el operador concatenar ("+") de la clase string como querías hacer, tienes que tener en cuenta que hay que concatenar varios strings, no puedes concatenar un float con un string. Para ello deberias convertir los floats a strings.
#include "convert.h"void myCode()
{
double x = ...;
...
std::string s = "the value is " + stringify(x);
...
}