Toon posts:

[Visual C++] string is ambiguous symbol

Pagina: 1
Acties:

Verwijderd

Topicstarter
We krijgen tijdenshet compileren de volgende error:
code:
1
g:\app-v4-compileerd\projectactiviteit.h(17) : error C2872: 'string' : ambiguous symbol

Deze krijgen we telkens als we string aanroepen. Als we de "using namespace std;" weghalen krijgen we ze niet, maar dan krijgen we een zooi andere errors. We hebben ook al geprobeerd alleen de "std::vector" te includen, maar ook dit baat niet. Met ostream/istream hebben we hetzelfde probleem.
Weet iemand hier een oplossing voor.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

welke headers include je? de .h versie of de extensielose versie?

als je gebruik maakt van namespaces (en dat is ook iets wat je gewoon moet doen imho), dan moet je dus de extensielose headers hebben:
code:
1
#include <string>

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

En dat is nou precies waarom "using namespace std;" slecht is :P

Probeer eens "using std::string" ?

Verwijderd

Topicstarter
Dat werkt idd een stuk beter. Waren we net zelf ook achter :)

Dank.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 10 juni 2002 13:26 schreef Zoijar het volgende:
En dat is nou precies waarom "using namespace std;" slecht is :P

Probeer eens "using std::string" ?
dat is helemaal niet de reden; het zou namelijk gewoon moeten werken als je zelf of andere libs verder geen string definieren.
Als je deze error krijgt terwijl je alleen gebruik van de standaard libs, dan zit er dus iets niet goed (inconsistent gebruik van .h headers en extensieloze headers)

verder ben ik het wel met je eens dat using namespace std; slecht is :)

overigens vind ik dat je in headers gebruik moet maken van de fully qualified namespace names (::std::string dus), zodat je headers niet afhankelijk kunnen zijn van using directives die voor de include van de header gebruikt zijn, en dat de rest van je code niet afhankelijk kan zijn van de using directives die in je header staan

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.