Il seguente codice sorgente viene compilato correttamente con Visual Studio 2010:codice compila in Visual Studio 2010, ma non deve compilare a tutti
namespace NS
{
class X
{
};
X Y(X str);
}
void myFun()
{
NS::X x;
Y(x);
}
(questo codice è ridotta in cui sono stati sostituiti tutti i miei nomi di classi e funzioni X, Y, ...)
Mi aspetto che la riga Y(x)
non riesca a compilare, poiché dovrebbe essere NS::Y(x)
.
Questo codice sorgente è stato compilato con il seguente comando
cl /c file.cpp
Non ci sono altri file inclusi qui, senza altre opzioni della riga di comando.
Perché questo file viene compilato? Bug in VS2010? O qualcosa che io (e i miei altri 3 colleghi) abbiamo trascurato?
ha provato questo con g ++ e ha ottenuto un riferimento non definito a NS :: Y (NS :: X) ''- quindi potrebbe essere un bug in VS .. – WeaselFox
http://ideone.com/WzC6V –
@WeaselFox : completamente estraneo. Il tuo errore è un errore * linker * perché 'NS :: Y' non è definito. È tipico e probabilmente verrà definito in un altro file in una configurazione completa. –