Erreur lors de la surcharge de l'opérateur (doit être une fonction membre non statique)

Je suis en train d'écrire la classe string sur mon propre. Et j'ai un tel code. Je veux juste surcharge operator=. C'est mon code et j'obtiens l'erreur dans la dernière partie de code.

#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;
}

Mais malheureusement, j'obtiens le message d'erreur S '& operator=(const S&)' doit être une fonction membre non statique.

Cet extrait de code compile avec g++.
Pas sûr de ce que vous êtes en train de faire, mais la fonction compile bien avec memcpy déclaré: liveworkspace.org/code/92ac98695817213f6c15af241904d165
Vous n'êtes pas en manque un point-virgule après la définition de la classe, et vous?
C'est ce que j'ai deviné, mais je n'ai jamais rencontré cette erreur de le faire. Est-il un compilateur spécifique qui n'?
Copiez et collez votre code. Tous les. Assez pour reproduire le problème.

OriginalL'auteur Rocketq | 2012-10-11