2010-01-05 16 views
26

W języku C#, lubię var kluczowe dla sytuacji tak:Czy istnieje odpowiednik słowa kluczowego C# "var" w C++/CLI?

var myList = new List<MyType>(); 

Czy istnieje odpowiednik w C++/CLI, czy muszę powtarzać nazwa typu każdym razem właśnie tak:

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

Nie można znaleźć jednoznacznego oświadczenia w dokumentach ani w Google. Używam Visual Studio 2008.

+19

Na niepowiązanej notatce, nigdy nie zdawałem sobie sprawy, jak bardzo 'List ^' wydaje się zawierać bardzo szczęśliwy emotikon. –

Odpowiedz

35

W Visual Studio 2008 nie ma takiego równoważne. Jednak w Visual Studio 2010 można użyć słowa kluczowego auto do implementacji var jak semantyki w C++. Wiem, że działa to z niezarządzanym C++ i jestem przekonany, że działa również dla C++/CLI.

+0

To jest funkcja w C++ 0x, czyż nie? –

+3

Tak, jest to funkcja C++ 0x. – DaMacc

+0

Nie jestem w 100% pewny, ale wydaje mi się, że pamiętam, że funkcje C++ 0x mogły * nie * zostać przeniesione do C++/CLI w tym momencie. Oni po prostu nie mają środków na banknoty. Na dłuższą metę z pewnością zostanie dodany do C++/CLI, ale nie sądzę, że będzie w VS2010. Mogę się mylić, tak właśnie przypominam sobie czytanie na blogu VCTeam. – jalf

4

C++ ma typedef. Po prostu nazywaj te włochate typy za pomocą typedef i korzystaj z przyjaznej nazwy.

Nie, nie ma słowa kluczowego "var". Niejasno przypominam, że jest coś, co w tym pomoże.

+0

Cóż, typedef może czasem pomóc, ale na przykład "typedef List ^ListMyType" nie zyskuje zbyt wiele. –

+0

Możesz napisać coś krótszego, np. Po prostu 'list'. To nie musi być globalnie unikalna nazwa, tylko unikalna w kontekście, w którym jest używana. – jalf

12

wiem, że typ wnioskowanie jest przewidziany w C++1x standard:

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

Obecnie AFAIK, nie ma odpowiednika.

+0

Leniuchowałem tak bardzo, gdy mówiłem C++ 1x ... –

+0

* * * * * kolejnym standardem jest nadal C++ 0x, nawet jeśli mamy już 2010. – sellibitze

Powiązane problemy