Aquí está mi código:¿Por qué el compilador de C++/CLI se confunde tan fácilmente con los símbolos?
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
namespace Tests {
ref class MyCollection : public IEnumerable<int> <----HERE!
El compilador de C#, por ejemplo, reconocerán que la única IEnumerable<T>
que tiene en esos espacios de nombres es de System::Collections::Generic
. ¿Por qué el compilador C++/CLI no puede hacer lo mismo? A menos que escriba su nombre completo o al menos Generic::IEnumerable<int>
, no lo reconocerá y desencadenará un error C2872: símbolo ambiguo.
¿Falta algo aquí?
Erm, uno es genérico y el otro no? No debería ser difícil elegir cuál usar, y además, el compilador C# no se confunde. –
¿Cómo sabe el compilador * por adelantado * que debe elegir la versión genérica? Todavía no ha analizado el '', e incluso cuando lo hace, primero debe determinar que '' 'es el comienzo de un tipo genérico, y no el operador' menos que '. Y todavía tiene que analizar C++ correctamente, por lo que no pueden cambiar arbitrariamente la forma en que analiza el código. –
jalf
Los lenguajes C# y C++ son diferentes y, por lo tanto, analizan el código de diferentes maneras – Mark