FIX: L'errore messaggio quando un "utilizzo dello spazio dei nomi std" direttiva viene inserito prima dell'operatore amico

Traduzione articoli Traduzione articoli
Identificativo articolo: 192539 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando un "utilizzo dello spazio dei nomi std" direttiva viene inserito prima di una dichiarazione di operatore friend, potrebbe essere visualizzato uno dei due seguenti errori:

caso 1
errore Errore: [nome di variabile membro]: Impossibile membro privato di accesso dichiarato nella classe [nome classe] [nome file] (numero di riga): vedere la dichiarazione di [variabile membro]
caso 2
[nome file](numero di riga): errore irreversibile C1001: errore interno del compilatore

(file del compilatore msc1.cpp, riga 1786)
Scegliere il comando supporto tecnico dal menu Guida in linea di Visual c ++ o aprire il file della Guida in linea di supporto tecnico per ulteriori informazioni.

Errore durante l'esecuzione cl.exe.

Cause

La risoluzione di operatore di amico ha esito negativo del compilatore front-end quando viene introdotto lo spazio dei nomi std.

Risoluzione

Un hotfix supportato è disponibile da Microsoft, tuttavia è destinato esclusivamente per risolvere il problema descritto in questo articolo. Utilizzarla solo nei sistemi in cui si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Se non si è notevolmente interessati da questo problema, si consiglia pertanto di attendere il successivo Service Pack 3 per Visual Studio 6.0 che contiene questo aggiornamento rapido (hotfix).

Per risolvere immediatamente questo problema, contattare il servizio supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverà il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.La versione inglese di questa correzione deve essere di avere i seguenti attributi di file o versioni successive:
   Date      Time      Size        File Name  Version#      Platform
   -----------------------------------------------------------------

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

Workaround

Effettuare una delle seguenti operazioni per risolvere il problema:
  • Spostare il "using namespace std" direttiva dopo la dichiarazione di operatore amico.
  • Evitare di utilizzare il "utilizzo dello spazio dei nomi std" direttiva.
  • Avanti dichiarare l'operatore e/o la classe.

Status

Microsoft ha confermato che questo un bug nei prodotti sono elencati nella sezione "Si applica a".Questo problema è stato risolto in Visual Studio 6.0 Service Pack 3.

Per ulteriori informazioni sui service pack di Visual Studio, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
194022Visual Studio 6.0 service pack, che cosa, dove, perché
194295Come riconoscere che è installato un service pack di Visual Studio

Informazioni

Test1.cpp riproduce l'errore di errore in caso 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 riproduce l'errore C1001 in caso 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()
   { }
				

Proprietà

Identificativo articolo: 192539 - Ultima modifica: venerdì 7 ottobre 2005 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Chiavi: 
kbmt kbhotfixserver kbqfe kbqfe kbbug kberrmsg kbfix kblangcpp kbvs600sp3fix KB192539 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 192539
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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