MSVS 2010 SP1 kapsamında iyi çalışan bir projem var. MSVS 2012 RC'ye dönüştürmeye çalışıyorum. C++ başlık/lib yolları ve MFC özel şeyler ile ilgili bazı şeyleri değiştirmek zorunda kaldım. Ama temizlemek için son bir engelim var.MSVS 2010 projesini MSVS 2012 RC'ye dönüştürme ancak hata alma "C++ standardı bu tür bir karma sağlama sağlamıyor"
MSVC 2010'da çok fazla unordered_map<basic_string<TCHAR>, int>
veya map<basic_string<TCHAR>, int>
kullanıyorum. İyi derler. Ancak MSVS 2012'de, bu hatayı aldım: "C++ standardı bu tür bir karma sağlama sağlamıyor"
Ağda biraz arama yaptıktan sonra, MSVS 2012 uygulamasının daha yakın olması gerektiğini öğrendim. C++ 11 standardı ve standardın sadece temel türleri ve 4 tanımlı dize türleri için karma işlevlerini tanımları (aralarında string
ve wstring
, ancak basic_string
dahil değildir). Tüm basic_string<TCHAR>
'u wstring
olarak değiştirdim ancak boşuna ... Hala aynı hatayı alıyorum.
Uygulamamı yeniden derleyebilmem için ne yapmalıyım?
Muhtemelen VS2010'da multibyte devre dışı bırakılmış, bu yüzden 'TCHAR', 'char' ile eşleştirilmiştir ve artık çok baytlı karakterleri etkinleştirilmiştir, böylece 'TCHAR', 'wchar_t' ile eşleşmektedir. Bu özellikleri proje özelliklerinde değiştirmeyi deneyin. – RedX
'basic_string' proje ayarlarınıza bağlı olarak 'std :: string' veya' std :: wstring' (her ikisi de sadece typedefs) 'dir. C++ 11'deki tek fark, "hash <>" dizesinin şimdi "" ve "" değil olmasıdır. –
Teşekkürler Bo,'u her yere eklemeliydim, daha önce yapmam gerekmiyordu. Cevap vermeden önce 6 saat beklemek zorundayım ... Bu arada, kendiniz yapmaktan çekinmeyin :) –
OOEngineer