 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Bruno CAUSSE Guest
|
Posted: Thu Jan 19, 2006 10:25 am Post subject: Template : Implicit typename is deprecated |
|
|
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 (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
|
Posted: Thu Jan 19, 2006 11:27 am Post subject: Re: Template : Implicit typename is deprecated |
|
|
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 (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
|
Posted: Thu Jan 19, 2006 12:37 pm Post subject: Re: Template : Implicit typename is deprecated |
|
|
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
|
Posted: Thu Jan 19, 2006 12:41 pm Post subject: Re: Template : Implicit typename is deprecated |
|
|
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
|
Posted: Thu Jan 19, 2006 8:29 pm Post subject: Re: Template : Implicit typename is deprecated |
|
|
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 |
|
 |
|
|
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
|
|