Update: Sie empfangen Fehlermeldung Wenn ein "using Namespace std"-Direktive wird vor Freund Operator eingefügt

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 192539 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn ein "using Namespace std"-Direktive vor eine Friend-Operator-Deklaration platziert wird, möglicherweise eine der folgenden beiden Fehlermeldungen angezeigt:

Fall 1
Fehler C2248: [Member Variable Name]: kann nicht in Klasse [Klassenname] Zugriff Private Member deklariert [Dateiname] (Zeilennummer): Siehe Deklaration von [Membervariable]
Fall 2
[Dateiname](Zeilennummer): Fataler Fehler C1001: Interner Compilerfehler

(Compilerdatei "msc1.cpp", Zeile 1786)
Bitte wählen Sie den technischen Supportbefehl im Visual C++ Hilfemenü, oder öffnen Sie die Hilfedatei "Kundendienst", um weitere Informationen.

Fehler beim Ausführen von cl.exe.

Ursache

Die Friend-Operator Auflösung fehlschlägt im Front-End-Compiler, wenn std-Namespace eingeführt wird.

Lösung

Ein Hotfix zur Behebung dieses Problems ist inzwischen bei Microsoft erhältlich; dieser Hotfix wurde jedoch ausschließlich zur Behebung des in diesem Artikel beschriebenen Problems entwickelt. Deshalb sollten Sie nur Systeme aktualisieren, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird unter Umständen zu einem späteren Zeitpunkt weiteren Tests unterzogen. Wenn durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfiehlt Microsoft daher, auf das nächste Service Pack 3 für Visual Studio 6.0 warten, das diesen Hotfix enthält.

Wenn Sie das Problem sofort beheben möchten, wenden Sie sich an Microsoft Product Support Services, um den Hotfix zu erhalten. Eine vollständige Liste mit Telefonnummern der Microsoft-Produktsupport und Informationen Supportkosten der folgenden Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Hinweis: PLEASE DO NOT TRANSLATE and DELETE THIS PASSAGE. IT DOES NOT APPLY TO GERMANY.Die englische Version dieses Updates sollte die folgenden Dateiattribute (oder höher) aufweisen:
   Date      Time      Size        File Name  Version#      Platform
   -----------------------------------------------------------------

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

Abhilfe

Führen Sie die folgenden, um dieses Problem zu umgehen:
  • Verschieben der "using Namespace std"-Direktive nach der Friend-Operator-Deklaration.
  • Verwenden Sie die "using Namespace std" Direktive.
  • Deklarieren Sie vorwärts des Operators und/oder Klasse.

Status

Microsoft hat bestätigt, dass dies einen Fehler in den Microsoft-Produkten ist, die im Abschnitt "Gilt für" aufgeführt sind.Dieser Bug wurde in Visual Studio 6.0 Service Pack 3 behoben.

Weitere Informationen zu Visual Studio Servicepacks finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
194022Visual Studio 6.0 Service packs, was, wo, warum
194295Wie Sie feststellen, dass ein Visual Studio Servicepack installiert ist

Weitere Informationen

Test1.cpp reproduziert den C2248 Fehler in Fall 1

   // 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 wird den Fehler C1001 im Fall 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()
   { }
				

Eigenschaften

Artikel-ID: 192539 - Geändert am: Freitag, 7. Oktober 2005 - Version: 3.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Keywords: 
kbmt kbhotfixserver kbqfe kbqfe kbbug kberrmsg kbfix kblangcpp kbvs600sp3fix KB192539 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 192539
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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