Socket a un constructeur qui prend une prise winsock en tant que paramètre et stocke dans une variable privée:classes C + - Déclaration du constructeur dans la classe dérivée
Socket::Socket(SOCKET s) {
this->s = s;
}
Je suis en train de faire une classe « GameSocket » qui analyser les données de ma classe Socket:
class GameSocket : public Socket {
protected:
void ParseData(unsigned char* data, int size);
};
a côté de ces classes, j'ai une classe "serveur" qui crée de nouvelles prises de courant en cas de besoin:
GameSocket* Server::Accept() {
SOCKET a = accept(s, 0, 0);
if(a==SOCKET_ERROR) {
return 0;
}
else {
return new GameSocket(a);
}
}
Cependant, cela me donne une erreur sur la dernière « else »:
error C2664: 'GameSocket::GameSocket' : cannot convert parameter 1 from 'SOCKET' to 'const GameSocket &'
Je dois manquer quelque chose avec les constructeurs lorsqu'ils traitent avec les classes dérivées ...
Ne pas aller trop dur pour moi , je suis relativement nouveau pour C++ et POO
Le constructeur ne devrait pas être dans le public: block de la classe? – Laserallan
oh oui - le corrigera - merci –
Un de ces inconvénients C++: les constructeurs ne peuvent pas être hérités. Je suis sûr qu'il y a de bonnes raisons à cela, mais je veux que les copnstructeurs publics soient hérités quand je ne fournis pas le mien, bon sang! – Arkadiy