Bonjour,

je travail aujourd'hui sur une abstraction des sockets (C) et des Apis reseaux en general (unix/windows) et j'ai eu une idee que j'aimerais exploiter mais j'aurais besoin de votre savoir a tous

j'aimerais faire un heritage de structure, en l'occurence la structure sockaddr_in.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
#include <netinet/in.h>
 
struct sockaddr_in {
    short            sin_family;   // e.g. AF_INET
    unsigned short   sin_port;     // e.g. htons(3490)
    struct in_addr   sin_addr;     // see struct in_addr, below
    char             sin_zero[8];  // zero this if you want to
};
 
struct in_addr {
    unsigned long s_addr;  // load with inet_aton()
};
J'ai donc commencer a coder une jolie structure mais je ne sais pas comment
initializer les variables de la structure dont j'herite,

_ etant donner que ce sont des structures issue du C, elles n'ont pas de constructeur, donc on oublie

_ La solution serait de faire une method plutot que d'utiliser le constructeur

Si vous aviez une solution pour utiliser l'initalisation du constructeur ca serait super.
(il est vrai que plutot que de refaire une method, je pourrais faire comme dans l'overload de l'operateur =)


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
 
struct		Asockaddr_in : public sockaddr_in {
 
Asockaddr_in(const short family, const unsigned short port,
			 const Saddr addr, const char* zero)
			: sin_family(family), sin_port(port),
				sin_addr(addr), sin_zero(zero) {}
 
const Asockaddr_in& Asockaddr_in::operator=(const Asockaddr_in& from) {
	if (this != &from) {
		this->sin_family = from.sin_family;
		this->sin_port = from.sin_port;
		this->sin_addr = from.sin_addr;
		this->sin_zero = from.sin_zero;
	}
	return *this;
}
 
};