2010-01-05 670 views
26

En C#, me gusta la palabra clave var para situaciones como esta:¿Hay un equivalente a la palabra clave "var" de C# en C++/CLI?

var myList = new List<MyType>(); 

¿Hay algún equivalente en C++/CLI, o tengo que repetir el nombre del tipo cada vez que al igual que este:

List<MyType ^>^ myList = gcnew List<MyType ^>(); 

No se pudo encontrar una declaración explícita en los documentos o por Google hasta el momento. Estoy usando Visual Studio 2008.

+19

En una nota no relacionada, nunca me di cuenta de cuánto 'List ^' parece incluir un emoticón muy feliz. –

Respuesta

35

En Visual Studio 2008 no hay tal equivalente. Sin embargo, con Visual Studio 2010 puede utilizar la palabra clave auto para implementar var como semántica en C++. Sé que esto funciona con C++ no administrado y estoy bastante seguro de que también funciona para C++/CLI.

+0

Esta es una característica en C++ 0x, ¿no es así? –

+3

Sí, esta es una característica de C++ 0x. – DaMacc

+0

No estoy 100% seguro, pero parece recordar que las características de C++ 0x * * no se transferirán a C++/CLI en este momento. Simplemente no tienen los recursos atm. A la larga, definitivamente se agregará a C++/CLI, pero no creo que esté en VS2010. Sin embargo, podría estar equivocado, esto es exactamente lo que recuerdo haber leído en el blog de VCTeam. – jalf

4

C++ tiene typedef. Solo alias esos tipos peludos con un typedef, y usa el nombre amistoso.

No, no hay palabra clave "var". Recuerda vagamente que hay algo así en el impulso.

+0

Bueno, typedef puede ayudar a veces, pero, por ejemplo, un "typedef List ^ListMyType" no gana mucho. –

+0

Podría escribirlo en algo más corto, como simplemente 'list'. No tiene que ser un nombre global único, solo único en el contexto en el que se usa. – jalf

12

sé que la inferencia de tipos se prevé en el C++1x standard:

auto someStrangeCallableType = boost::bind(&SomeFunction, _2, _1, someObject); 
auto otherVariable = 5; 

la actualidad, que yo sepa, no existe un equivalente.

+0

Lol'ed tanto cuando digo C++ 1x ... –

+0

el * code * * name * del próximo estándar sigue siendo C++ 0x, incluso si ya tenemos 2010. – sellibitze

Cuestiones relacionadas