Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Символ : неоднозначный символ
Замечания
Компилятор не может определить, какой символ вы ссылаетесь. В области находится несколько символов с указанным именем. См. примечания после сообщения об ошибке для расположений файлов и объявлений компилятора, найденного для неоднозначного символа. Чтобы устранить эту проблему, можно полностью квалифицировать неоднозначный символ с помощью своего пространства имен, например std::byte или ::byte. Вы также можете использовать псевдоним пространства имен, чтобы предоставить включенное пространство имен удобное короткое имя для использования при диамбигации символов в исходном коде.
C2872 может возникать, если файл заголовка содержит директиву using, а последующий файл заголовка включается, содержащий тип, который также находится в пространстве имен, указанном в директиве using . Укажите директиву using только после указания всех файлов заголовков.#include
C2872 может происходить в Visual Studio 2013 из-за Windows::Foundation::Metadata::Platform конфликта между типом Platform перечисления и пространством имен C++/CX. Чтобы обойти эту проблему, выполните следующие действия:
Удалите предложение "Using namespace Windows::Foundation::Metadata" из файлов проекта.
Укажите полное имя любого типа, включенного в это пространство имен.
Пример
В следующем примере возникает ошибка C2872, так как делается неоднозначная ссылка на переменную с именем i, и две переменные с одинаковым именем находятся в области видимости.
// C2872.cpp
// compile with: cl /EHsc C2872.cpp
namespace A {
int i;
}
using namespace A;
int i;
int main() {
::i++; // ok, uses i from global namespace
A::i++; // ok, uses i from namespace A
i++; // C2872 ambiguous: ::i or A::i?
// To fix this issue, use the fully qualified name
// for the intended variable.
}