Chyba: Zobrazí "závažná chyba C1001: Vnitřní chyba KOMPILÁTORU" Chyba při vytváření objektu, který je kopie virtuálního funkce vrátí hodnotu v jazyce Visual c++ 6.0

Překlady článku Překlady článku
ID článku: 226110 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Při vytváření objektu, který je kopií vrácená hodnota funkce virtuální (dočasný objekt) pomocí konstruktoru dodaných kompilátor kopie, může se zobrazit následující chybová zpráva:
test.cpp(22): C1001 závažná chyba: Vnitřní chyba KOMPILÁTORU
(kompilátor soubor 'msc1.cpp', řádek 1794)
Prosím zvolte příkaz odborné pomoci na Visual C++
Nabídka Nápověda, nebo otevřít soubor nápovědy technickou podporu pro další informace

Kroky pro reprodukci v následující části Další informace naleznete v.

Řešení

Chcete-li získat tento problém čtyři způsoby:
  1. Kopírovat konstruktor explicitně definovat. (Viz # 1 řešení v ukázkovém kódu níže).
  2. Odeberte virtuální klíčové slovo z funkce, která vrací hodnotu. (Viz # 2 řešení v ukázkovém kódu níže).
  3. Zavést dočasné proměnné k uložení vrácenou hodnotu. (Viz # 3 řešení v ukázkovém kódu níže).
  4. Odebrat podporu kompilátoru pro synchronní zpracování výjimek (C++). To lze provést odstraněním /GX (výchozí nastavení aplikace Visual Studio) z možností kompilace. (Viz # 4 řešení v ukázkovém kódu níže).
Řešení č. 1 je doporučená řešení, kdykoli je to možné.

Poznámka: Pokud definujete kopie konstruktoru, měli byste je rovněž definovat operátor přiřazení (operátor =).

Prohlášení

Microsoft potvrzuje, že se to chybu v Microsoft produktech, které jsou uvedeny na začátku tohoto článku.

Tento problém byl opraven aktualizací Microsoft Visual C++ .NET.

Další informace

////////////////////////////////////////////////////////////////////// 
// 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 */ 
				

Vlastnosti

ID článku: 226110 - Poslední aktualizace: 28. února 2014 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Klíčová slova: 
kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbbug kbcompiler kbfix kbnoupdate KB226110 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:226110

Dejte nám zpětnou vazbu

 

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