Hata: Alıyorsunuz bir "önemli hata C1001: IÇ DERLEYICI HATASı" hata, bir kopyasını sanal bir işlevi olan bir nesne oluşturduğunuzda, dönüş değeri Visual C++ 6.0

Makale çevirileri Makale çevirileri
Makale numarası: 226110 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Belirtiler

Nesne oluşturulurken derleyici tarafından sağlanan bir kopya kurucu kullanılarak bir kopyasını (geçici bir nesne) sanal bir işlevin dönüş değeri, aşağıdaki hatayı alabilirsiniz:
Test.cpp(22): önemli hata C1001: IÇ DERLEYICI HATASı
(derleyici dosya 'msc1.cpp', satır 1794)
Lütfen Visual C++ Teknik Destek'e komutunu seçin.
Yardım menüsü ya da daha fazla bilgi için teknik destek Yardım dosyasını açın.

Lütfen daha fazla bilgi bölümüne aşağıdaki yeniden oluşturma adımları bakın.

Çözüm

Bu sorunu geçici olarak almak için dört yolu vardır:
  1. Açık olarak bir kopya Oluşturucu belirtin. (Geçici çözüm 1 örnek kodda aşağıya bakın).
  2. Virtual anahtar sözcüğünü işlevinden değer döndüren kaldırın. (Geçici çözüm # 2 örnek kodda aşağıya bakın).
  3. Dönüş değeri tutulacağı geçici bir değişken sunar. (Geçici çözüm 3 Aşağıdaki örnek kodda bakın).
  4. Zaman uyumlu (C++) özel durum işleme derleyici desteğini kaldırın. Bu derleme seçeneklerinizi /GX (Visual Studio'nun varsayılan)'ı kaldırarak gerçekleştirilir. (Geçici çözüm # 4 örnek kodda aşağıya bakın).
Geçici çözüm 1 önerilen geçici çözümü mümkün olur.

Not: bir kopya kurucu tanımlamak, bir atama işleci de tanımlamanız gerekir (işletmen =).

Durum

Microsoft, Microsoft bir hata olduğunu onaylamıştır bu makalenin başında listelenen ürünlerden.

Bu sorun, Microsoft Visual C++ giderilmiştir .NET.

Daha fazla bilgi

////////////////////////////////////////////////////////////////////// 
// cl /c /GX test.cpp
// test.cpp(22) : fatal error C1001: INTERNAL COMPILER ERROR
//  (compiler file 'msc1.cpp', line 1794) 
//  Please choose the Technical Support command on the Visual C++ 
//  Help menu, or open the Technical Support help file for more information
////////////////////////////////////////////////////////////////////// 
class A
{
  public:
    /* workaround #1, add an explicit copy constructor to class A */ 
    // A(A& a) {};
    ~A() {}; 
};
class B
{
  public:
 /* workaround #2, remove virtual keyword from B::GetA */ 
    virtual A& GetA(void);
    void Func (void);
};
void B::Func (void)
{
  A *att;
  att=new A(GetA());
  /* workaround #3, substitute the above line with the following two lines */ 
  //A tmp = GetA();
  //att=new A(tmp);
}
/* workaround #4, remove /GX compiler option */ 
				

Özellikler

Makale numarası: 226110 - Last Review: 23 Şubat 2014 Pazar - Gözden geçirme: 3.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbbug kbcompiler kbfix kbnoupdate KB226110 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:226110

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