Oprava: Zobrazí chybová zpráva při "pomocí oboru názvů std" direktivu je umístěn před operátorem přítele

Překlady článku Překlady článku
ID článku: 192539 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při "pomocí oboru názvů std" direktivu je umístěna před deklarace operátor přítele, může získat jeden z následujících dvou chyb:

Případ 1
Chyba C2248: [název proměnné členů]: nelze přístup soukromý člen deklarované v třídě [název třídy] [název souboru] (řádek číslo): viz deklarace členské proměnné
Případ 2
[název souboru](číslo řádek): C1001 závažná chyba: Vnitřní chyba KOMPILÁTORU

(kompilátor souboru msc1.cpp, řádek 1786)
Zvolte odbornou příkazu v nabídce Nápověda pro Visual C++ nebo otevřít soubor odbornou pomoc Další informace.

Chyba provádění cl.exe.

Příčina

Operátor rozlišení přítele selže v kompilátoru front-end při zavedena std oboru názvů.

Řešení

Společnost Microsoft má nyní k dispozici podporovanou opravu hotfix, která je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze v systémech, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud není použití tento problém, doporučujeme počkat další Service Pack 3 pro Visual Studio 6.0 obsahuje tuto opravu hotfix.

Potřebujete-li odstranit tento problém okamžitě, obraťte se na služby podpory společnosti Microsoft, kde můžete tuto opravu hotfix získat. Úplný seznam telefonních čísel služeb technické podpory společnosti Microsoft a informace o cenách technické podpory naleznete na tomto webu společnosti Microsoft:
http://support.microsoft.com/contactus/?ws=support
Poznámka: Poplatky, které je třeba obvykle zaplatit za telefonní hovory, mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft zjistí, že oznámený problém lze vyřešit konkrétní aktualizací. Další dotazy a žádosti o odbornou pomoc, které se netýkají této zvláštní opravy, podléhají běžným sazbám za poskytnutí odborné pomoci.Anglická verze této opravy má následující nebo vyšší atributy souborů:
   Date      Time      Size        File Name  Version#      Platform
   -----------------------------------------------------------------

   9/15/98   08:26p    1,183,795   C1xx.dll   12.00.8257.0  (x86)
				

Jak potíže obejít

Proveďte jednu z následujících tento problém vyřešit:
  • Přesunout "pomocí oboru názvů std" direktiva po přítele deklarace operátoru.
  • Vyhněte se použití "pomocí oboru názvů std" direktivy.
  • Vpřed deklarovat operátor nebo třídy.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.Tato chyba byla opravena v Visual Studio 6.0 Service Pack 3.

Další informace o aktualizacích service Pack Visual Studio klepnutím na následující čísla následujících článcích databáze Microsoft Knowledge Base:
194022Visual Studio 6.0 služby balíky co, kde, proč
194295Jak zjistit, že je nainstalována aktualizace service pack Visual Studio

Další informace

Chyba C2248 v případ 1 reproduces Test1.cpp

   // test1.cpp
   // Compiler options needed: cl /c /GX
   #include <iostream>

   using namespace std;

   #ifdef WORKAROUND
   class CMyClass;
   ostream& operator <<(ostream &, const CMyClass &);
   #endif // WORKAROUND

   class CMyClass
   {
   public:

     friend ostream& operator <<(ostream &, const CMyClass &);
     // An alternative workaround is to define the operator in the
     // class declaration. In this case it is not necessary to forward
     // declare the class and friend function.

   private:

      int value;
   };

   ostream& operator <<(ostream& out, const CMyClass& m)
   {

      int i = m.value;  // C2248 Error
      return out;
   }

   void main()
   { }
				

Test2.cpp reproduces C1001 Chyba v případě 2

   // test2.cpp
   // Compiler options needed: cl /c /GX
   #include <iostream>

   using namespace std;

   #ifdef WORKAROUND
   int operator+(int, const class &);
   #endif // WORKAROUND

   class CMyClass
   {
   public:

     friend int operator+(int, const CMyClass &);  // C1001 Error.

   };

   void main()
   { }
				

Vlastnosti

ID článku: 192539 - Poslední aktualizace: 7. října 2005 - Revize: 3.2
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: 
kbmt kbhotfixserver kbqfe kbqfe kbbug kberrmsg kbfix kblangcpp kbvs600sp3fix KB192539 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:192539

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