Forum Programmation.c++ utiliser "using " avec g++

Posté par  (site web personnel) .
Étiquettes : aucune
0
22
juin
2006
Bonjour!

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  (site web personnel) . Évalué à 3.

    Une idée à la con comme ca m'arrive parfois (je dis ca d'apres mon experience personnelle et le message d'erreur):
    DStringArray():DArray<DString,true> (){} ?
    Et using DArray<DString,true>::Add;
    • [^] # Re: Idée à la con

      Posté par  (site web personnel) . Évalué à 2.

      Effectivement... Et en plus ca semble tout a fait logique!

      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.