Probleme sur les class

Signaler
Messages postés
28
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
23 mai 2004
-
Messages postés
28
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
23 mai 2004
-
g trouve un cour sur les applications reseaux mais il manque des explications si quelqu'un pourrait me les apporrtais sa serais super

je cherche a ajouter une variable membre a une classe de socket pour qu'elle serve de pointeur sur une classe de dialog parent. Il faudrait qu'elle soit de type CDialog* qu'elle s'appelle m_pwnd et qu'elle est un acces prive.
je dois aussi ajouter une fonction membre de la classe de socket de type void et un acces public.
cette fonction doit etre modifier de façon a ce que la valeur pointeur passe en argument definisse la variable membre

merci d'avance

5 réponses

Messages postés
34
Date d'inscription
samedi 25 mai 2002
Statut
Membre
Dernière intervention
25 août 2003

pour le (1) :

(*) dans la déclaration de ta classe de socket tu ajoute en privé :
private :
CDialog * m_pwnd;


(*) ensuite tu changes le constructeur juste au dessus et tu lui passes en premier param ton pointeur:

CBidule () : public CSocket
{
public :
CBidule(CDialog * m_pwnd);


(*) tu penses a inclure dans ton cpp le .h de ta classe parent.

(*) lors de ton appel au constructeur dans ta classe dialog tu pense à ajouter en premier param le pointeur sur la classe actuelle :

CBidule socket(this);


pour la deuxieme question, j'ai rien compris lol j'ai le cervo en bouillit avec tout le boucan dans la rue, j'en ai marre de cette musique de jacky!!! :S
Messages postés
34
Date d'inscription
samedi 25 mai 2002
Statut
Membre
Dernière intervention
25 août 2003

Au fait!
pense aussi a inclure le .h de ta classe dans le cpp de ta cdialog.
Messages postés
28
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
23 mai 2004

merci de ton aide mais je n'ai pas tout compris
moi je programme avec Visual C++
j'arrive pas a assimiler ce que tu dis dans le programme
par exemple tu dis :

(*) dans la déclaration de ta classe de socket tu ajoute en privé :
> private :
> > CDialog * m_pwnd;

ma classe est deja creer et je ne sais pas comment l'editer d'autre part quand je l'ai creer j'avais un menu pr configurer 2 ou 3 trucks mais rien concernant l'acces prive.

dans le livre ils mettent en exemple :

<code>void CMySocket::SetParent(CDialog *pWnd)
{
m_pWnd = pWnd;
}


est ce que des fois ce code genere la variable membre ?
j'ai pas tres bien compris ce passage
Messages postés
34
Date d'inscription
samedi 25 mai 2002
Statut
Membre
Dernière intervention
25 août 2003

Tiens le forum est fou........

Bon, tout d'abord tu programmes depuis combien de temps en c++ parce que la déclaration de classe est la premiere chose que l'on apprends... :S

Bon enfin, ne cherche pas forcément a tout faire automatiquement grace a visual, c bcp plus rapide de taper le code direct qq fois.

Si tu conais l'architecture d'une classe, il faut que tu modifies sa déclaration pour y ajouter un pointeur sur la classe de base en donnée membre, ensuite que tu ajoutes en parametres dans le constructeur ce pointeur, et que tu affectes le pointeur en parametre de ton constructeur au pointeur des donées membres (logique).

Si tu n'as pas compris ce que j'ai dis au dessus c qu'il te manque des parties essentielles au niveau des connaoissances de base pour faire un classe, ça c le minimum syndicale à savoir pour commencer la prog, donc je te conseillerai de repartir dans d boucains pour mieux appréhender le probleme... :/

Bon enfin, voila le code à mettre pour ajouter un pointeur(je mets pas tout le code sinon on n'est pas couché) :

Fichier de ta classe dérivée de la CSocket avec ".h" en extension :
/////////////////////////////////////////////////////////////////////////////
// CMaClasse command target

class CMaClasse : public CSocket
{
// Attributes
public:

// Operations
public:
CMaClasse(CClasseDeBase * pDialog);
virtual ~CMaClasse();

// Overrides
public:
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMaClasse)
//}}AFX_VIRTUAL

// Generated message map functions
//{{AFX_MSG(CMaClasse)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG

// Implementation
protected:
CClasseDeBase * m_pDialog;
};


Fichier de ta classe dérivée de la CSocket avec ".cpp" en extension :
/////////////////////////////////////////////////////////////////////////////
// CMaClasse

CMaClasse::CMaClasse(CClasseDeBase * pDialog)
{
m_pDialog = pDialog;
}

CMaClasse::~CMaClasse()
{
}


Appel au constructeur (dans ta fenetre de dialogue principale pour créer un objet du type de ta classe inventée)
CMaClasse MaClassePersoAMoi(this); // this etant le pointeur actuel


Voila, j'espere que t'auras compris quand meme! ;)
A+
Messages postés
28
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
23 mai 2004

excuse moi de ne pas avoir repondu plus tot mais j'ai eu quelque probleme de compte

sinon je me lance depuis tres peu de temps dans la programmation et je suis encore qu'un debutant en visual. avant je programmer avec borland et j'ai un peu de mal a faire le lien entre les 2 systemes.

j'avais pour projet de creer un chat en reseau mais pas en console je voulais une interface graphique, c'est pour cela que j'utilisais visual C++

sinon j'ai a peu pres compris ce que tu as dis ormis un detail:
je sais pas trop ce que c'est que le constructeur mais pour les pointeurs j'en ai deja utilise avec borland C++ et j'arrive a les utiliser sans trop de mal.

Je te remerci pour ton code mais c'est la qu'est mon soucis avec visual c++: a quel endroit est ce qu'il faut le mettre ?
et comment fait on pour acceder au code de la classe de socket, je l'ai creer avec la methode "insert" (dans le menu en haut), "new class" et j'ai remple la fenetre qui s'est ouverte, apres sa la classe a ete creee mais je sais pas ou passe son code source

merci quand meme pour toute ton aide