Escribo clase de cadena por mi cuenta. Y tengo ese código. Solo quiero sobrecargar operator=
. Este es mi código real, y obtengo un error en la última parte del código.Error al sobrecargar operador (debe ser una función de miembro no estático)
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
class S {
public:
S();
~S() { delete []string;}
S &operator =(const S &s);
private:
char *string;
int l;
};
S::S()
{
l = 0;
string = new char[1];
string[0]='\0';
}
S &operator=(const S &s)
{
if (this != &s)
{
delete []string;
string = new char[s.l+1];
memcpy(string,s.string,s.l+1);
return *this;
}
return *this;
}
Pero, por desgracia me sale error 'S & operador = (const S &)' debe ser una función miembro no estática.
Este fragmento de código compila para mí con g ++. – Neil
No estoy seguro de lo que está haciendo, pero la función compila bien con 'memcpy' declaró: http://liveworkspace.org/code/92ac98695817213f6c15af241904d165 – chris
No le falta un punto y coma después de la definición de la clase, ¿verdad? – dasblinkenlight