Bonjour,
Pour des raisons de comoditées dans mon code (adaptation d'un programme en console sur wxWidget), j'ai dérivé la classe wxStaticText en une classe console, afin de surdéfinir l'opérateur '<<' pour qu'il écrive dans le label.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
class Console : public wxStaticText{
    public:
        void operator<<(const char* string);
        void operator<<(string string);
};
]

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
void Console::operator<<(const char* string){
    char* buff = strcat((char*)(this->GetLabel()).c_str(), (char*) string);
    this->SetLabel(buff);
}
 
void Console::operator<<(string string){
    this->SetLabel(this->GetLabel() + string);
}
Lorsque je teste la surdéfinition dans le main, tout fonctionne, mais lorsque
j'y fait appelle dans une autre fonction (un client ftp, qui au lieu d'envoyer le log sur cout comme dans la console l'envoie sur un pointeur de type Console* log), j'ai droit a une erreur a chaque appelle de la surdéfinition "error: void value is not ignored as it ought to be"

exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
class Client{
    private:
        int PortSnd, PortRec;
        char* adresse;
        char* login;
        char* pass;
        string CurDir;
        SOCKET Connexion;
        SOCKET Receive;
        WSAData Data;
        sockaddr_in clientService;
        sockaddr_in ReceptionService;
    public:
        Client(char adresse[], int PortSnd, char login[],char pass[], Console* log);
        int ConnectFTP();
        string SendFTP(char* Send);
        string RecResponse(SOCKET sock, u_long timeout=0);
        void Disconnect();
        void ChangeDir(char* Dir);
        void CreateDir(char* Dir);
        bool RecFile(char* FileName,char Type);
        bool SendFile(char* FileName,char Type);
        void GetList();
        void ParsePASV(string Response);
        string ParseLIST();
        Console* Log;
};
 
if(WSAStartup(MAKEWORD(2, 2),&(this->Data)) ) { 
        *Log << "Erreur lors de l'initialisation de Winsock: " << WSAGetLastError() << "\n"; //erreur de compilation juste ici :/
        exit(EXIT_FAILURE);
    }
le client marche dans la console, mais la je ne comprends pas du tout l'erreur signalée. J'utilise GCC sous codeblock et windows.

Merci d'avance de vos réponses