Bonjour,

J'utilise une librairie qui possède une liste d'enum inclus dans un namespace :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace lib{
 
    enum ProcessingState {
        ProcessingStateAsked       = 0,
        ProcessingStateProcessing  = 1,
        ...
    };
 
    enum Scenario {
        ScenarioS1 = 1,
        ScenarioS2 = 2,
        ...
    };
}
Dans mon code j'ai aussi une enum qui porte le même nom qu'une enum de la librairie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
enum Scenario {
        S1 = 1,
        S2 = 2,
        ...
    };
Cette enum n'est pas inclus dans un namespace.

Le problème arrive quand j'inclus ma librairie à l'endroit où j'utilise mon enum:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
#include "scenario.h" //<-- contient mon enum Scenario
#include <lib.h> //<-- contient l'enum de la librairie Scenario
 
void maFonction(Scenario scenar) //Je souhaite utilise mon enum Scenario
{
...
}
Le compilateur me dit :
erreur : reference to 'Scenario' is ambiguous
Je pensais que le namespace de la librairie empêcherai le problème

Quelle est la meilleure méthode pour éviter ce genre de problème ?
Suis-je obliger d'ajouter une namespace à mon enum et de préfixer chaque appelle de l'enum (méthode que j'aimerai éviter car la librairie possède déjà son namespace) ?