Mam projekt działa poprawnie pod MSVS 2010 SP1. Próbuję przekonwertować go do MSVS 2012 RC. Musiałem zmienić kilka rzeczy, głównie związanych ze ścieżkami nagłówka/lib C++ i niestandardowymi materiałami MFC. Ale mam jedną ostatnią przeszkodę do wyjaśnienia.Konwertowanie projektu MSVS 2010 na MSVS 2012 RC, ale pojawia się błąd "Standard C++ nie zapewnia skrótu dla tego typu"
W MSVC 2010, używam wielu unordered_map<basic_string<TCHAR>, int>
lub map<basic_string<TCHAR>, int>
. Kompiluje się dobrze. Ale w MSVS 2012, właśnie dostaję ten błąd: "Standard C++ nie zapewnia skrótu dla tego typu"
Po przeszukaniu trochę w sieci, dowiedziałem się, że MSVS 2012 powinien być bardziej zbliżony do Standard C++ 11 oraz że standard definiuje tylko funkcje mieszania dla typów podstawowych i 4 zdefiniowane typy łańcuchów (wśród nich: string
i wstring
, ale nie obejmuje basic_string
). Więc zmieniłem wszystko basic_string<TCHAR>
na wstring
, ale bezskutecznie. Nadal dostaję ten sam błąd.
Co należy zrobić, aby móc ponownie skompilować moją aplikację?
Prawdopodobnie w VS2010 miałeś wyłączony wielobajtowy, więc 'TCHAR' zamapowany na' char', a teraz masz włączone znaki wielobajtowe, więc 'TCHAR' zamienia się na' wchar_t'. Spróbuj zmienić te ustawienia we właściwościach projektu. – RedX
'basic_string' jest albo 'std :: string' lub' std :: wstring' (oba tylko typedefs), w zależności od ustawień projektu. Jedyna różnica w C++ 11 polega na tym, że łańcuch 'hash <>' jest teraz w '', a nie ''. –
Dzięki Bo, musiałem dodać wszędzie, zanim nie musiałem tego robić. Muszę poczekać 6 godzin, zanim będę mógł udzielić odpowiedzi ... W międzyczasie, możesz to zrobić samemu :) –
OOEngineer