2009-10-14 5 views
2

J'ai du code C++, et pour une raison quelconque, pour quelques classes, ils apparaissent comme boost :: boost :: boost :: boost :: boost :: classname dans le navigateur Visual Studio.Les tests Intellisense boost :: boost :: boost :: boost :: boost :: boost :: classname ....... pourquoi?

Les classes elles-mêmes sont et non dans l'espace de noms boost.

Il n'y a aucun problème pour compiler le code. J'ai sorti la version prétraite du fichier .cpp, et je ne vois rien de génial. J'ai essayé de supprimer et de reconstruire la base de données Intellisense, non.

J'ai essayé de mettre un ';' sur une ligne après le #include, même si je sais que les espaces de noms ne l'exigent pas. Ne pas aller.

Quelqu'un d'autre a déjà vu cela ou sait comment le réparer?

+2

Je l'ai déjà vu. C'est juste une erreur d'Intellisense. Cela arrive de temps en temps, et cela n'a pas d'importance. Le compilateur sait ce qui se passe réellement et traite votre code correctement. Intellisense est juste et sera toujours brisé. Un mauvais outil pour résoudre une tâche impossible. – jalf

Répondre

2

J'ai installé boost 1,40 au lieu de 1,39, et le problème est parti.

-3

Je suppose que vous voyez les ruminants du mangled name donnés au modèle par le compilateur.

Le compilateur C++ supprime le nom de la variable pour inclure des informations sur les arguments du modèle afin que ces noms puissent devenir assez complexes.

+1

Je doute que. Je ne pense pas que le caractère ':' est autorisé (ou jamais utilisé) dans un nom. Avez-vous lu l'article que vous avez lié? –

+0

Basé sur le peu d'informations qu'il y a à partir de la question initiale, je suppose encore qu'il s'agit d'une sorte de problème de dénigrement de nom. Mais bon, je peux me tromper;) – jussij

+3

Non, c'est ' s pas nom mangling. C'est en intellisense, pas le linker. Et plus dans la vue de classe, cette classe sera sous l'espace de noms boost. Niché cependant de nombreux niveaux profonds, tous ses propres espaces de noms boost. C'est comme si l'analyseur intellisense pensait qu'il y a un espace de noms non fermé, mais il n'y en a manifestement pas (puisque les choses se compilent correctement). –