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.

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);
   ...
}