OVH Cloud OVH Cloud

Declaration de variables dans le header de la classe

2 réponses
Avatar
Hervé
Bonjour,

J'ai un petit problème.

Dans le header de ma classe, je définis 2 variables:

#include "stdafx.h"
#include <afxmt.h>

class CVariableASurveiller
{
public:
CVariableASurveiller( void );
~CVariableASurveiller( void );

CMutex mControleData;
CSingleLock slControleData;
};



Dans mon fichier Cpp, je mets:

// CTestMutexApp construction
CVariableASurveiller::CVariableASurveiller( void )
{
}

// CTestMutexApp destruction
CVariableASurveiller::~CVariableASurveiller( void )
{
}

Quand je compile mon fichier cpp:
C:\---------\Test Mutex\CVariableASurveiller.cpp(17) : error C2512:
'CSingleLock' : no appropriate default constructor available

Bon ok c'est normal puisque CSingleLock nécessite que je lui passe un
pointeur sur le CMutex.

J'essaye donc de mettre dans le header:
CSingleLock slControleData(&mControleData);

Quand j'essaye de compiler le cpp, il me met:
c:\-----------\Test mutex\cvariableasurveiller.h(12) : error C2059: syntax
error : '&'


Donc voila LA question:

Comment faire pour déclarer deux variables qui seront créées à la
construction (et détruites à la destruction) pour que l'une utilise l'autre
en paramètre ?

Si je met tout dans le constructeur, ça compile, mais ce n'est pas
disponible en-dehors du constructeur, donc pas très utile ;-(

CVariableASurveiller::CVariableASurveiller( void )
{
CMutex mControleData;
CSingleLock slControleData(&mControleData);
}

Merci
@+
Hervé

2 réponses

Avatar
Falk Tannhäuser
Hervé wrote:

#include "stdafx.h"
#include <afxmt.h>

class CVariableASurveiller
{
public:
CVariableASurveiller( void );
~CVariableASurveiller( void );

CMutex mControleData;
CSingleLock slControleData;
};

Dans mon fichier Cpp, je mets:

// CTestMutexApp construction
CVariableASurveiller::CVariableASurveiller( void )
{
}


C'est là que les listes d'initialisateurs (?)
des constructeurs sont incontournables:

CVariableASurveiller::CVariableASurveiller()
: slControleData(&mControleData)
{
}


Falk

Avatar
Hervé
Salut,

C'est là que les listes d'initialisateurs (?) des constructeurs sont
incontournables:


Nickel, merci ça marche. Je ne connaissais pas les listes
d'initialisateurs...

@+
Hervé