Ecco il mio codice:Perché il compilatore C++/CLI si confonde facilmente con i simboli?
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
namespace Tests {
ref class MyCollection : public IEnumerable<int> <----HERE!
Il compilatore C#, per esempio, riconosceranno che l'unica IEnumerable<T>
che ha in tali spazi dei nomi da System::Collections::Generic
. Perché il compilatore C++/CLI non può fare lo stesso? A meno che non digiti il suo nome completo o almeno Generic::IEnumerable<int>
, non lo riconoscerà e genererà un errore C2872: simbolo ambiguo.
Mi manca qualcosa qui?
Erm, uno è generico e l'altro no? Non dovrebbe essere difficile scegliere quale usare, e inoltre, il compilatore C# non è confuso da esso. –
Come fa il compilatore a sapere * in anticipo * che dovrebbe scegliere la versione generica? Non ha ancora analizzato il '', e anche quando lo fa, deve prima stabilire che '' 'è l'inizio di un tipo generico, e non l'operatore' minore di'. E deve ancora analizzare correttamente C++, in modo che non possano cambiare arbitrariamente il modo in cui analizza il codice. –
jalf
I linguaggi C# e C++ sono diversi e quindi analizzano il codice in modi diversi – Mark