Aracılığıyla paylaş


Derleyici Hatası C2872

'sembol' : belirsiz simge

Açıklamalar

Derleyici hangi simgeye başvurabileceğinizi belirleyemiyor. Belirtilen ada sahip birden fazla simge kapsam içinde. Derleyicinin belirsiz simge için bulduğu dosya konumları ve bildirimleri için hata iletisinin ardından gelen notlara bakın. Bu sorunu düzeltmek için, örneğin veya std::bytead alanını kullanarak belirsiz simgeyi tam olarak ::byte niteleyebilirsiniz. Ayrıca, dahil edilen bir ad alanına kaynak kodunuzda sembolleri belirsiz hale getirme sırasında kullanmak üzere kullanışlı bir kısa ad vermek için bir ad alanı diğer adı da kullanabilirsiniz.

C2872, bir üst bilgi dosyası using yönergesi içeriyorsa ve yönergesinde using belirtilen ad alanında da bir tür içeren sonraki bir üst bilgi dosyası eklendiğinde oluşabilir. Yönergeyi using yalnızca tüm üst bilgi dosyalarınız ile #includebelirtildikten sonra belirtin.

Enum türü ile C++/CX tanımlı Windows::Foundation::Metadata::Platform ad alanı arasındaki Platform çakışma nedeniyle Visual Studio 2013'te C2872 oluşabilir. Bu soruna geçici bir çözüm bulmak için şu adımları uygulayın:

  • Proje dosyalarından "using namespace Windows::Foundation::Metadata" yan tümcesini kaldırın.

  • Bu ad alanına dahil edilen herhangi bir tür için tam adı belirtin.

Örnek

Aşağıdaki örnek C2872 hatasını oluşturur, çünkü i adlı değişkenine belirsiz bir atıfta bulunulur; aynı ada sahip iki değişken kapsamdadadır.

// 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.
}