لا يمكن تحويل المعلمة من WCHAR [100] إلى WCHAR **
سؤال
لدي طريقة تتوقع 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
يجب أن يقول صراحة ما هو ضروري للقيام بذلك أيضًا.
لا تنتمي إلى StackOverflow