OVH Cloud OVH Cloud

Pb de compilation

2 réponses
Avatar
popaul
bonjour,

je cherche à compiler lve mais j'ai une succession d'erreurs type:

rglist.h:46: error: extra qualification ‘T_MEMBER::’ on member T_MEMBER’
rglist.h:84: error: extra qualification ‘T_LIST::’ on member ‘T_LIST’
rglist.h:86: error: extra qualification ‘T_LIST::’ on member ‘T_LIST’

la 1ere erreur correpond à la declaration suivante:

class T_MEMBER
{
friend class T_LIST;

protected:
T_LVE_CTX *ctx;
T_MEMBER *mb_next;
T_MEMBER *mb_prev;

int has_mark;
int mb_num;

public:

T_MEMBER::T_MEMBER(T_LVE_CTX *ctx, int num); <--ERREUR,ligne 46

int GetNum(void) { return mb_num; };
int HasMark(void) { return has_mark; };
void SetMark(int flag) { has_mark = flag; };
T_MEMBER *GetNext() { return mb_next; };
T_MEMBER *GetPrev() { return mb_prev; };

virtual void BlitThumb(SDL_Rect *dst_rect) {};
virtual void GenThumb(void) {};
virtual T_MEMBER *OnSelect(void);
virtual void ShowInfo(void) {};

protected:
virtual void Save(FILE *lst_file);
virtual int Load(FILE *lst_file);
};

je suppose que cette declaration etait correcte avec des versions
precedentes du compilateur, quelles modifs puis-je faire pour que la
compilation puisse se faire.
merci d'avance pour votre aide.

2 réponses

Avatar
Michel SIMIAN
popaul wrote:
bonjour,

je cherche à compiler lve mais j'ai une succession d'erreurs type:

rglist.h:46: error: extra qualification ‘T_MEMBER::’ on member T_MEMBER’


.../...

public:

T_MEMBER::T_MEMBER(T_LVE_CTX *ctx, int num); <--ERREUR,ligne 46



Cette notation est utilisée quand les fonctions sont
définies à l'extérieur de la déclaration de la classe
(hors des { et } de class T_MEMBER.

Le 1er T_MEMBER est le nom de la classe, et le 2eme
après les :: est le nom de la fonction membre.

Cette fonction, ici, s'appelle aussi T_MEMBER (car
c'est un constructeur).

Normalement, on fait

class T_MEMBER
{
.../...
T_MEMBER(....)

};

T_MEMBER::T_MEMBER(...)
{
corps de T_MEMBER
.../...
}

Enleve donc T_MEMBER:: qui se trouve entre class T_MEMBER {
et };


--
L'Amer Michel

Avatar
popaul

Enleve donc T_MEMBER:: qui se trouve entre class T_MEMBER {
et };




merci beaucoup, cela resoud effectivement le probleme!