Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
'symbol' : nejednoznačný symbol
Poznámky
Kompilátor nemůže určit, na který symbol odkazujete. V oboru je více než jeden symbol se zadaným názvem. Podívejte se na poznámky za chybovou zprávou pro umístění souborů a deklaracemi kompilátoru nalezeného pro nejednoznačný symbol. Pokud chcete tento problém vyřešit, můžete plně kvalifikovat nejednoznačný symbol pomocí jeho oboru názvů, například std::byte nebo ::byte. Alias oboru názvů můžete použít také k poskytnutí vhodného krátkého názvu, který můžete použít při nejednoznačných symbolech ve zdrojovém kódu.
C2872 může nastat, pokud hlavičkový soubor obsahuje direktivu using a další hlavičkový soubor je zahrnut, který obsahuje typ, který je také v oboru názvů specifikovaném v direktivěusing. Zadejte direktivu using až po zadání všech souborů hlaviček pomocí #include.
C2872 může v sadě Visual Studio 2013 nastat kvůli konfliktu mezi Windows::Foundation::Metadata::Platform typem výčtu a oborem názvů definovaným jazykem Platform C++/CX. Chcete-li tento problém vyřešit, postupujte takto:
Odeberte ze souborů projektu klauzuli using namespace Windows::Foundation::Metadata.
Zadejte plně kvalifikovaný název pro libovolný typ, který je součástí tohoto oboru názvů.
Příklad
Následující příklad generuje C2872, protože nejednoznačný odkaz je vytvořen na proměnnou s názvem i; dvě proměnné se stejným názvem jsou v oboru:
// 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.
}