Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"szimbólum" : nem egyértelmű szimbólum
Megjegyzések
A fordító nem tudja meghatározni, hogy melyik szimbólumra hivatkozik. A megadott névvel több szimbólum is szerepel a hatókörben. Tekintse meg a hibaüzenetet követő megjegyzéseket azoknak a fájlhelyeknek és deklarációknak, amelyeket a fordító talált a nem egyértelmű szimbólumhoz. A probléma megoldásához teljes mértékben minősítheti a nem egyértelmű szimbólumot a névtér használatával, például std::byte::byte.
A névtér aliasával kényelmes rövid nevet adhat a belefoglalt névtérnek a forráskódban található szimbólumok egyértelműsítéséhez.
A C2872 akkor fordulhat elő, ha egy fejlécfájl tartalmaz egy használatirányelmezetet, és egy későbbi fejlécfájlt is tartalmaz, amely olyan típust tartalmaz, amely az irányelvben megadott névtérben using is szerepel. Csak akkor adjon meg direktívátusing, ha az összes fejlécfájl meg van adva.#include
A C2872 a Visual Studio 2013-ban az enum típus és a Windows::Foundation::Metadata::Platform C++/CX által definiált Platform névtér ütközése miatt fordulhat elő. A probléma megoldásához kövesse az alábbi lépéseket:
Távolítsa el a "using namespace Windows::Foundation::Metadata" záradékot a projektfájlokból.
Adja meg a névtérben szereplő bármely típus teljes nevét.
Example
Az alábbi példa C2872-t hoz létre, mivel a rendszer nem egyértelmű hivatkozást hoz létre egy nevesített iváltozóra; két azonos nevű változó van a hatókörben:
// 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.
}