لا يمكن تحويل المعلمة من WCHAR [100] إلى WCHAR **

StackOverflow https://stackoverflow.com/questions/4093353

  •  28-09-2019
  •  | 
  •  

سؤال

لدي طريقة تتوقع wchar ** ، أحتاج إلى استعادة بعض البيانات من هذه الطريقة. أنا أعلن صفيف WCHAR [100] ونقله إلى الوظيفة. المترجم يلقي هذا الخطأ:

WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);

خطأ C2664: "xxxx": لا يمكن تحويل المعلمة 3 من "WCHAR [100] إلى "WCHAR **"

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

المحلول

بشكل عام ، إذا كانت الوظيفة تأخذ مؤشرًا إلى مؤشر (WCHAR** في هذه الحالة) ، ستخصص ذاكرتها الخاصة وتعيين المؤشر الموجود على تلك الذاكرة. وثائق SomeFunc يجب أن تصف إذا كان هذا بالفعل ما يحدث.

إذا كان هذا هو الحال ، فمن المحتمل أن تحتاج إلى شيء مثل:

WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);

ثم الاستفادة من result إذا نجحت.

بالطبع ، في هذه الحالة ، من المحتمل أن تقلق على الأرجح بشأن تعويض الذاكرة التي result تم تعيينه إلى الإشارة إلى. وثائق SomeFunc يجب أن يقول صراحة ما هو ضروري للقيام بذلك أيضًا.

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