سؤال

_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440

أحصل على خطأ في السطر أعلاه أثناء تجميع هذا الرمز في VS2008. في VC6 فهو يجمع بشكل جيد.

خطأ C2440: '=': لا يمكن تحويلها من "const wchar_t *" إلى '_tchar *'

ما يبدو أن المشكلة وكيف يمكنني إصلاحه؟

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

المحلول

حاول إلقاء ذلك

strGroupName = (_TCHAR*)_tcschr(strTempName, 92);

يبدو لي أن VS2008 حصلت أكثر قليلا صارمة على طريات النوع، ولن تفعلها تلقائيا في بعض الحالات.

نصائح أخرى

strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));

وذلك لأن البديل من الوظيفة التي تستخدمها لها CONST _TCHAR * كمدخل وإرجاع CONST _TCHAR *.

سيكون البديل الآخر هو الحصول على اسم strtempname كما _tchar *، وليس كما const _tchar *. في هذه الحالة، يتم استخدام وظيفة البديل التي تحتوي على معلمة _tchar * وإرجاع قيمة _tchar *.

strGroupName يجب أن يكون أيضا مؤشر ل const.

const _TCHAR* strGroupName = _tcschr(strTempName, 92);

لا حاجة لإعلانها حتى الدعوة إلى تهيئة ذلك.

_tcschr يعود مؤشر const. وبالتالي يجب أن تكون قيمة العودة const _TCHAR* strGroupName = NULL; إذا لم يكن من الممكن تغيير اسم StrgroupName إلى مؤشر CONST، فقم بإعلان كل من المؤشرات كأماكن غير مؤتمرات غير مؤتمرات.

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