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); };
Lorsque je teste la surdéfinition dans le main, tout fonctionne, mais lorsque
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); }
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:
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.
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); }
Merci d'avance de vos réponses
Partager