2009-06-23 5 views
0

Kann jede Stelle mir bei der Umwandlung von Interface-Pointer helfen Variable in vc zur Liste ++, da ich die Störung erhalte während typeconversionWie vC++ (ex: IListPtr) Zeiger auf std :: list zu konvertieren?

Fehler 2440 „Typumwandlung“: nicht von ‚_bstr_t‘ auf ‚std :: Liste umwandeln kann < _Ty>‘

Edit: ich habe es so gemacht:

C#

List<string> Disp() { 
    List<string> li = new List<string>(); 
    li.Add("Ravi"); 
    li.Add("Raj"); 
    Return li; 
} 

C++

void main() { 
    HRESULT Hr=CoInitilize(NULL); 
    ITestPtr p(__uuid("DemoClass"); 
    std::list l=(std::list)p->Disp(); 
} 

Aber seltsam einige Male es zeigt, dass Disp kein Mitglied von ITest ist und manchmal, dass Typ-Konvertierungsfehler. Ich habe verifiziert, dass dies nur deshalb der Fall ist, wenn der Rückgabetyp List

+1

Zuerst müssen Sie uns zeigen, etwas Code. Zweitens schauen wir uns Ihren Code an und beraten Sie. Geschickt, nicht wahr? –

+0

Zeigen Sie uns p yeah! – Tom

Antwort

0

Ich würde erwarten, das Beste zu tun, es sei denn, es gibt eine wirklich nette Verknüpfung manuell die CLI-Liste und push_back() auf die std :: Liste gehen.

Als mögliches Beispiel dafür, was es aussehen könnte (ich weiß nicht, C++/CLI)

std::list<T> stdlist; 
foreach(T t in CLIlist) 
{ 
    stdlist.push_back(t); 
} 
+0

Gib mir eine klare Erklärung yar ...... – Cute

+0

@ Cute. Das ist so klar wie es nur geht. –

Verwandte Themen