Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur bizarre

2 réponses
Avatar
Vincent Richard
Bonjour,

Quelqu'un peut-il m'expliquer pourquoi j'obtiens une erreur de compilation
avec le programme suivant (voir plus bas) ?

[vincent@Sherlock tmp]$ g++ -ansi -Wall -pedantic -o prob prob.cpp
prob.cpp: Dans constructor « A::A() »:
prob.cpp:57: erreur d'analyse syntaxique avantle jeton « ; »
prob.cpp:58: rendu confus par les erreurs précédentes, abandon

[vincent@Sherlock tmp]$ g++ --version
g++ (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)


Voici le code :


#include <string>

class S
{
public:

static S* getInstance() { return (inst ? inst : (inst = new S)); }

const std::string& get() const { return str; }

private:

S() { }
~S() { }

static S* inst;
std::string str;
};

S* S::inst = NULL;


class T
{
public:

T(const std::string& s) { str = s; }

inline operator const std::string&() { return (str); }

private:

std::string str;
};


class M
{
public:

M(const std::string &s) { /* ... */ }
};


class A
{
public:

A()
{
// OK :-)
const std::string& s = S::getInstance()->get();
M m1(T(s));

// KO :-(
M m2(T(S::getInstance()->get())); // ligne 57
}
};


int main()
{
A a;
}


Merci d'avance pour vos réponses.

Vincent

--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-

2 réponses

Avatar
Jean-Marc Bourguet
Vincent Richard writes:

Quelqu'un peut-il m'expliquer pourquoi j'obtiens une erreur de compilation
avec le programme suivant (voir plus bas) ?


Bug dans gcc vraissemblablement (toujours present dans gcc 3.3). Je
ne vois pas de probleme et ca passe avec como
(http://www.comeaucomputing.com/pcgi-bin/compiler.html) et sun CC.
C'est toujours bien d'essayer un autre compilateur quand on ne
comprend pas le probleme et le "Test Drive Comeau C/C++ Online" est
pratique pour ca.

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

Avatar
Gabriel Dos Reis
Vincent Richard writes:


| prob.cpp:57: erreur d'analyse syntaxique avantle jeton « ; »

Tien, je ne savais pas que dans ce contexte, ils traduiraient toekn
par jeton.

[...]

| // OK :-)
| const std::string& s = S::getInstance()->get();
| M m1(T(s));

Ceci est une déclaration de fonction nommée m1 prenant un T et
retournant un M -- le paramètre formel se nomme s, qui n'a rien à
avoir avec la ligne au dessus.

| // KO :-(
| M m2(T(S::getInstance()->get())); // ligne 57

Toutes les version courantes de GCC en production (i.e. précédant
GCC-3.4) ont des problèmes pour parser une construction.

-- Gaby