C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Template : Implicit typename is deprecated

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Bruno CAUSSE
Guest





PostPosted: Thu Jan 19, 2006 10:25 am    Post subject: Template : Implicit typename is deprecated Reply with quote



Bonjour,

J'essaie de mettre en conformité un ancien (2001) code

J'ai des warnings avec gcc 3.3 et des erreurs avec la version 4.01

Malgres mes recherches je coince Sad (je suis loin d'etre confirmé)

Voilà le code qui me pose probleme :

class CMsg {

public:

CMsg(const string& sMsg, const string& asFrom);

string sRawText, sFrom;

};


template<class TRules>
class CMsgSGJoin: public CMsg {

public:

CMsgSGJoin(const string& sMsg, const string& asFrom, istream& is,
CSGBase* pSg);

virtual ~CMsgSGJoin();

string idg;

typename TRules::TGame game;

};


template<class TRules>
class CSG : public CSGBase {
public:
typedef typename TRules::TMatchType TMatchType;
typedef typename TRules::TBoardType TBoardType;
typedef typename TRules::TGame TGame;

typedef CSGRequest<TRules> TRequest;

typedef CMsgSGAbortRequest TMsgAbortRequest;
..../...
typedef CMsgSGJoin<TRules> TMsgJoin;
..../..
typedef CMsgSGWho<TRules> TMsgWho;

CSG(ggsstream* apgs);
virtual ~CSG() {};

..../...
}

template <class TRules>
class CServiceGDK : public CSG<TRules> {
public:
CServiceGDK(ggsstream* apgs);

virtual void HandleJoin (const TMsgJoin& msg); <======= ca coince ici
..../...
virtual void MakeMoveIfNeeded(const string& idg);
};

template void CServiceGDK<TRules>::HandleJoin(const TMsgJoin& msg) {
BaseJoin(msg);
MakeMoveIfNeeded(msg.idg);
}

Je pense qu'il manque "typename" quelque part.

Merci de votre aide.

--
bruno

Back to top
Stephane Wirtel
Guest





PostPosted: Thu Jan 19, 2006 11:27 am    Post subject: Re: Template : Implicit typename is deprecated Reply with quote



Bruno CAUSSE said the following on 19/01/2006 11:25:
Quote:
Bonjour,

J'essaie de mettre en conformité un ancien (2001) code

J'ai des warnings avec gcc 3.3 et des erreurs avec la version 4.01

Malgres mes recherches je coince Sad (je suis loin d'etre confirmé)

Voilà le code qui me pose probleme :

class CMsg {

public:

CMsg(const string& sMsg, const string& asFrom);

string sRawText, sFrom;

};


template<class TRules
class CMsgSGJoin: public CMsg {

public:

CMsgSGJoin(const string& sMsg, const string& asFrom, istream& is,
CSGBase* pSg);

virtual ~CMsgSGJoin();

string idg;

typename TRules::TGame game;

};


template class CSG : public CSGBase {
public:
typedef typename TRules::TMatchType TMatchType;
typedef typename TRules::TBoardType TBoardType;
typedef typename TRules::TGame TGame;

typedef CSGRequest
typedef CMsgSGAbortRequest TMsgAbortRequest;
.../...
typedef CMsgSGJoin<TRules> TMsgJoin;
.../..
typedef CMsgSGWho<TRules> TMsgWho;

CSG(ggsstream* apgs);
virtual ~CSG() {};

.../...
}
Au lieu de redéfinir TMatchType, TBoardType et TGame, je pense que tu peux faire

using typename TRules::TMatchType;
using typename TRules::TBoardType;
using typename TRules::TGame;

Quote:

template <class TRules
class CServiceGDK : public CSG public:
CServiceGDK(ggsstream* apgs);

virtual void HandleJoin (const TMsgJoin& msg); <======= ca coince ici

Quelle est l'erreur exacte du compilateur ?
Quote:
.../...
virtual void MakeMoveIfNeeded(const string& idg);
};

template void CServiceGDK BaseJoin(msg);
MakeMoveIfNeeded(msg.idg);
}

Je pense qu'il manque "typename" quelque part.

Merci de votre aide.

--
bruno


Back to top
Jean-Marc Bourguet
Guest





PostPosted: Thu Jan 19, 2006 12:37 pm    Post subject: Re: Template : Implicit typename is deprecated Reply with quote



Bruno CAUSSE <envoi (AT) lesSpam (DOT) fr> writes:

Quote:
template <class TRules
class CServiceGDK : public CSG public:
CServiceGDK(ggsstream* apgs);

virtual void HandleJoin (const TMsgJoin& msg); <======= ca coince ici

TMsgJoin n'est pas cherche dans la classe de base CSG qu'elle depend d'un parametre template.

typename CSG<TRules>::TMsgJoin

devrait fonctionner, mais il y a peut-etre plus simple.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Bruno CAUSSE
Guest





PostPosted: Thu Jan 19, 2006 12:41 pm    Post subject: Re: Template : Implicit typename is deprecated Reply with quote

dans l'article [email]pxbirsg2y1l.fsf (AT) news (DOT) bourguet.org[/email], Jean-Marc Bourguet à
[email]jm (AT) bourguet (DOT) org[/email] a écrit le 19/01/06 13:37 :

Quote:
TMsgJoin n'est pas cherche dans la classe de base CSG<TRules> parce
qu'elle depend d'un parametre template.

typename CSG<TRules>::TMsgJoin

devrait fonctionner, mais il y a peut-etre plus simple.

Et si je mets dans CSG :

Typedef typename CSG<TRules>::CMsgSGJoin<TRules> TMsgJoin;

Je pense (deduction de mes recherche + ton message) qu'il manque en effet la
classe de base.


Back to top
Bruno Causse
Guest





PostPosted: Thu Jan 19, 2006 8:29 pm    Post subject: Re: Template : Implicit typename is deprecated Reply with quote

Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> wrote:

Quote:
ypename CSG<TRules>::TMsgJoin

devrait fonctionner, mais il y a peut-etre plus simple.

ca fonctionne :-)

merci



--
Bruno Causse
http://perso.wanadoo.fr/othello

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.