je suis en train de porter du code qui compile sous MS VC++ vers g++ sous Linux (puis ensuite sous osX).
Une template est définie: DArray. Ensuite, une classe est définie, basée dessus:
class DStringArray : public DArray<DString, true>
{
public:
DStringArray():DArray(){}
[...]
using DArray::Add;
[...]
};
Et c'est la que les problèmes commencent: g++ me donne les messages suivants:
DStringArray.h:31: error: `template<class T, bool IsClass> class DArray' used without template parameters
DStringArray.h:31: error: expected nested-name-specifier before "Add"
DStringArray.h:31: error: using-declaration for non-member at class scope
DStringArray.h: In constructor `DStringArray::DStringArray()':
DStringArray.h:16: error: class `DStringArray' does not have any field named `DArray'
A la ligne 31, c'est le "using" et a la ligne 16, c'est le constructeur. Pour le using, il se peut que se soit simplement que g++ ne le supporte pas (ce qui m'etonne tout de meme). Une astuce (http://burks.bton.ac.uk/burks/language/cpp/cppfaq/strangei.h(...) permet de remedier a ce probleme (enfin pour l'instant, ca ne marche pas non plus).
Pour le constructeur, je me suis dit que la solution etait de mettre un "using DArray::DArray;" mais ca ne marche evidement pas...
En un mot: est ce que quelqu'un a des idées??
Merci d'avance!
Mathias
# Idée à la con
Posté par Ph Husson (site web personnel) . Évalué à 3.
DStringArray():DArray<DString,true> (){} ?
Et using DArray<DString,true>::Add;
[^] # Re: Idée à la con
Posté par Mathias Bavay (site web personnel) . Évalué à 2.
je viens d'essayer, ca marche! (j'espere que ca marche toujours avec MSVC++, ca serait bien).
Un IMMENSE merci, ma reconnaissance éternelle, etc!
Mathias
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.