C++ Разрешение конфликтов с устаревшими безымянными пространствами имен

У меня есть большой объем устаревшего кода, который объявляет ряд важных типов. Например:

typedef uint32 EventId;

В настоящее время я интегрирую отличную новую версию стороннего кода (Scaleform), который имеет пространства имен, но имеет противоречивые определения:

namespace Scaleform { namespace GFx {
class EventId ...
}}

Есть код, где встречаются оба определения, и я, конечно, получаю ошибки:

ошибка: ссылка на EventId неоднозначна

примечание: кандидат найден по имени поиска 'EventId'

примечание: кандидат найден по имени поиска 'Scaleform:: GFx:: EventId'

(OSX Clang, кстати)

Насколько я могу судить, я вроде SOL, поскольку C++ запрещает подобные коллизии, и я не могу (например) обернуть устаревшие ссылки чем-то вроде:

using namespace;

Чтобы заставить безымянное пространство имен.

Единственный выход - переименовать один из типов, чтобы не было конфликтов, верно?

0 ответов

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