Düzeltme: Visual C++ .NET 2003'ü kullanarak kod derleme hatası C2555 oluşuyor

Makale çevirileri Makale çevirileri
Makale numarası: 839998 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

Türetilmiş bir sınıf içinde iç içe geçmiş bir sınıf kullanıyorsanız, bir uygulama Microsoft Visual C++ .NET 2003 kullanılarak oluşturduğunuzda, derleyici hata C2555 oluşturur. Bu sorunla karşılaştığınızda, aşağıdakine benzer bir hata iletisi alırsınız:
<a1>hata</a1> C2555: 'Dervied::NestedDerived::GetEditObject': sanal işlevi geçersiz dönüş türü farklı ve gelen covariant değil ' Base::NestedBase:: GetEditObject '
Türetilmiş bir sınıf içinde kullanan iç içe geçmiş sınıfı, taban sınıftaki iç içe geçmiş bir sınıftan türetilir, bu sorun oluşur. Bu hata iletisi, dönüş türleri covariant olduğunu belirtir. Ancak dönüş covariant dosyaları.

Çözüm

Desteklenen bir düzeltme Microsoft'tan edinilebilir, ancak yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, sorundan ciddi olarak bu sorundan ciddi bir şekilde etkilenmiyorsanız, bir sonraki Microsoft Visual Studio .NET, bu düzeltmeyi içeren 2003 beklemeniz önerilir.

Bu sorunu hemen çözmek için, düzeltmeyi edinmek üzere Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Bu düzeltmenin ingilizce sürümü dosya öznitelikleri (veya daha yenisi) aşağıdaki tabloda listelenir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   Date         Time   Version       Size       File name
   ------------------------------------------------------
   01-Apr-2004  01:12  13.10.4092.0    933,888  C1.dll
   01-Apr-2004  01:13  13.10.4092.0  2,207,744  C1xx.dll
   01-Apr-2004  07:49  13.10.4092.0  1,966,080  Feacp.dll
   01-Apr-2004  01:20                    5,342  Feacp.lib

Durum

Microsoft, "Geçerli Olduğu Ürünler" bölümünde listelenen Microsoft ürünlerinde bu sorunun olduğunu onaylamıştır.

Daha fazla bilgi

Bu sorunu yeniden oluşturmak için <a0></a0>, aşağıdaki örnek kodu derleme:
//test.cpp
//cl test.cpp
//Error C2555
class Base 
{ 
public: 
        class NestedBase
        { 
        public: 
                virtual Base *   GetEditObject (); 
        }; 
        virtual NestedBase*        Edit () ; 
}; 

class Derived : public Base
{ 
public: 
        class NestedDerived : public NestedBase
        { 
        public: 
                virtual Derived*    GetEditObject(); 
        }; 
        virtual NestedDerived*        Edit () ; 
}; 
aşağıdaki hata iletisini alırsınız:
nest.cpp(21): <a1>hata</a1> C2555: 'Dervied::NestedDerived::GetEditObject': sanal işlevi geçersiz dönüş türü farklı ve gelen covariant değil ' Base::NestedBase:: GetEditObject ' nest.cpp(9): 'Base:: NestedBase::GetEditObject' bildirimi Bkz:
Microsoft ürün güncelleştirmelerini açıklamak için kullanılan terminoloji hakkında ek bilgi için, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
824684Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

Özellikler

Makale numarası: 839998 - Last Review: 15 Mayıs 2006 Pazartesi - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbvsnet2003presp1fix kbfix kbbug kbqfe kbhotfixserver KB839998 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:839998

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com