سؤال

typedef map<wstring , IWString> REVERSETAG_CACHE ;
REVERSETAG_CACHE::iterator   revrsetagcacheiter;
.
.
.
wstring strCurTag;
strCurTag =  revrsetagcacheiter->second; //Error C2593
<اقتباس فقرة>   

خطأ C2593: مشغل = غامضة

وماذا الاحالة أعلاه تعطي هذا الخطأ؟ وهو يعمل في VC6. لا يجمع في VC9.

هل كانت مفيدة؟

المحلول

وrevrsetagcacheiter->second هو من نوع IWString. وبالتالي فإنه لن ترجمة. أنا لا أعتقد أنه سوف يجمع في VC6 أيضا.

على سأحاول مرة أخيرة واحدة : لهل BasicString صفك c_str طريقة ()؟ إذا كان الأمر كذلك محاولة تحويله إلى wstring باستخدام std::wstring str(iter->second.c_str());

نصائح أخرى

وفي تخمين، VC6 يسمح أكثر من تحويل المعرفة من قبل مستخدم واحد ليتم تطبيقها، في حين أن (صحيح) VC9 لا. نلقي نظرة على C ++ تحويلات ضمنية لمناقشة مشكلة عامة.

والحل العام هو توفير التحويل اللازم نفسك، بدلا من المحاولة مترجم للقيام بذلك.

وحاول أن يلقي ما تعيين لنوع الصحيح.

ومثل:

strCurTag =  (wstring)revrsetagcacheiter->second;

والأفضل من ذلك، قد يكون المقصود:

IWstring strCurTag;

ويجب عادة تجنب تحويلات ضمنية، أي جعل كل من المهام الخاصة بك تعمل مع نفس النوع بالضبط في جانب واحد والآخر، وخصوصا عندما انها تافهة لمعرفة التي تشارك أنواع. الاعتماد، أو محاولة الاعتماد على تحويلات ضمنية ليست فكرة جيدة.

وإذا كان الأمر كذلك:

strCurTag =  static_cast<wstring>(revrsetagcacheiter->second);

ولا تجمع، ثم علينا أن نبدأ في التفكير في المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top