Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"symbol" : niejednoznaczny symbol
Uwagi
Kompilator nie może określić, z którym symbolem się odwołujesz. W zakresie znajduje się więcej niż jeden symbol o określonej nazwie. Zapoznaj się z uwagami po komunikacie o błędzie dla lokalizacji plików i deklaracji kompilatora znalezionego dla niejednoznacznego symbolu. Aby rozwiązać ten problem, można w pełni zakwalifikować niejednoznaczny symbol przy użyciu jego przestrzeni nazw, na przykład std::byte lub ::byte. Możesz również użyć aliasu przestrzeni nazw, aby nadać dołączonej przestrzeni nazw wygodną krótką nazwę do użycia podczas uściślania symboli w kodzie źródłowym.
C2872 może wystąpić, jeśli plik nagłówka zawiera dyrektywę using, a kolejny plik nagłówka zawiera typ, który znajduje się również w przestrzeni nazw określonej w using dyrektywie. Określ dyrektywę dopiero po określeniu using wszystkich plików nagłówka za pomocą polecenia #include.
C2872 może wystąpić w programie Visual Studio 2013 z powodu konfliktu między Windows::Foundation::Metadata::Platform typem wyliczenia a przestrzenią nazw zdefiniowaną przez Platform język C++/CX. W celu obejścia tego problemu należy wykonać następujące czynności.
Usuń klauzulę "using namespace Windows::Foundation::Metadata" z plików projektu.
Określ w pełni kwalifikowaną nazwę dla dowolnego typu uwzględnionego w tej przestrzeni nazw.
Przykład
Poniższy przykład generuje C2872, ponieważ odniesienie do zmiennej o nazwie i jest niejednoznaczne; w zasięgu są dwie zmienne o tej samej nazwie.
// 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.
}