Как определить более чем член пространства имен без имени снаружи?

Когда дело доходит до использования namespaces это действительно хорошая вещь, чтобы избежать столкновения имен. Но вот что важно для меня: использование anonymous namespaces,

Здесь, в моем примере, по какой-то причине я определил два безымянных пространства имен, и случайно два имеют функцию-член с одинаковой сигнатурой. И я хочу определить два вне пространств имен.

namespace {
    void foo(); // to be defined outside in somewhere else
    int x = 0; // I want the above foo() to increment x
}

namespace {
    void foo();  // to be defined outside in somewhere else
                 // I want foo to do something else
}

// Here is my guess how to define a function outside Anonymous NS.
void ::foo() {
    cout << "::foo()" << endl;
}

// void foo(){
//   cout << "foo()" << endl;
//}

int main(){

    foo();
    ::foo();

    cout << endl;
    cin.get();
    return 0;
}
  • Как избежать конфликтов имен при наличии нескольких пространств без имен?

Спасибо.

0 ответов

Другие вопросы по тегам