Erreur de compilation - typedef de complex

Erreur de compilation - typedef de complex - C++ - Programmation

Marsh Posté le 28-04-2009 à 20:23:16    

je cherche a compiler un projet open-source tres peu connus/utilise (MultiRNAFold, un logiciel de calcul de pliage de molecules pour ma douce  :whistle: )
 
Et bon deja le makefile est pas super, mais maintenant j'ai une erreur de compilation dans un fichier particulier, qui commence comme cecI :
 

Code :
  1. #ifndef PARTITION_FUNCTION_COMPLEX_H
  2. #define PARTITION_FUNCTION_COMPLEX_H
  3. #include <complex.h>
  4. // TODO: should this be long double?
  5. typedef PARAMTYPE Real;
  6. //typedef double Real;
  7. typedef complex<Real> Complex;


 
Ca crash sur typedef complex<Real> Complex;
 
src/simfold/s_partition_function_complex.h:26: erreur: expected unqualified-id before ‘<’ token
 
On a pas le droit de faire ce genre de choses ?? Quelle serait une ecriture qui proposerait le meme principe ? (Utiliser par la suite Complex au lieu de complex<Real> ?)
 
J'ai pas tellement envie de mettre trop les mains dans le code source qui m'a l'air merveilleusement maintenu  :D


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 28-04-2009 à 20:23:16   

Reply

Marsh Posté le 28-04-2009 à 20:39:25    

#include <complex>
std::complex

 

complex vis dans le namespace std

 

ce truc a l'air bien moisi de truc antédiluviens :/


Message édité par Joel F le 28-04-2009 à 20:40:16
Reply

Marsh Posté le 28-04-2009 à 21:16:56    

Oui mais non (j'avais essaye deux choses deja) :
 
using namespace std;
 
et : typedef std::complex<Real> Complex
Avec cette derniere solution ca donne :
src/simfold/s_partition_function_complex.h:26: erreur: expected unqualified-id before ‘__complex__’
 
Ca semble un micropoil mieux... mais c'est toujours pas bon :-(  
Sinon bah... vi ca a pas l'air exceptionnel comme code  :sweat: Deja le makefile j'ai du supprimer des giga-tonnes de lignes qui faisaient des trucs du genre -I/usr/include/i386 blablabla...  :whistle:


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 28-04-2009 à 21:20:56    

change l'include j'ai dit :o
 
et pas de using dans un .h :o

Reply

Marsh Posté le 28-04-2009 à 21:33:51    

Joel F a écrit :

change l'include j'ai dit :o
 
et pas de using dans un .h :o


Ah bah vi jsuis trop bete !! Le pire c'est que je code du c++/QT en ce moment mais j'ai meme pas cliqué sur le .h !
 
Par contre pourquoi pas de using dans un .h ?? Parce que cela a une influence sur ceux qui l'incluent ? Mais peut etre est-ce plus "tricky" ?
Sinon evidemment sans le .h ca roule impeccable  :jap:


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 29-04-2009 à 07:29:13    

injecter un namespace entier dans le namespace global depuis un .h est une pollution du dit namespace globale. Soit tu 'using' un symbol, soit tu using namespace dans un .cpp ou dans un autre namespace.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed