1
Je suis perplexe ici, et demande votre aide. VC2005SP1 avale ce code (effacé) mais gcc 4.0.1 s'éclipse ... Veuillez me signaler l'erreur évidente? TIA!Modèle C++: OKay pour VC2005SP1, gcc rentre-t-il?
template<typename BCT, typename UIDT>
class Factory
{
public:
template<typename CT>
bool Register(UIDT UniqueID)
{
if (UniqueID > 10)
return(false);
CreateObject2<BCT, CT>;
return(true);
}
};
template <typename MC, typename MT>
class Manager : public Factory<MC, MT>
{
public:
bool RegisterType(const MT Type, const std::string TypeName)
{
return Factory<MC, MT>::Register<MC>(Type); // gcc claims "expected primary-expression before '>' at this point
}
};
Wow. 4 mn pour avoir la réponse (":: template" a fait l'affaire). Je suis impressionné. Oh, et merci !! –
Pour l'enregistrement, le compilateur est supposé voir Factory :: Register (Type) sans le modèle en tant que Factory :: Register < MC > (Type). VS essaye d'être plus utile (sans doute plus qu'il ne le devrait), mais c'est pourquoi g ++ s'est étouffé. –
Et, pour mémoire, g ++ avait une fois cette "fonctionnalité" mais l'enlevait car le code écrit sans "template" et "typename" compilerait sur g ++ mais pas sur VC à la fois, ... –