我是C++/cli的新手,我面臨的情況是: 我正在做的項目需要使用外部dll,在我的函數I需要使用類A,B和C都是從這個dll,我把它們放在我的.h文件,.h文件看起來像:從[class name]到[class name]沒有合適的轉換函數*
#include library I use
public ref class MyClass
{
public:
MyClass();
~MyClass();
otherfuc();
private:
A *a;
B *b;
C *c;
}
我.cpp文件看起來像:
MyClass::MyClass()
{
a = new A();
b = new B(*a);
c = b->func(); //error happened
}
MyClass::otherfunc()
{
c->func_c()
}
A,B,C類是非託管類,所以我只有一種方法可以在託管類中聲明它們,就像我在頭文件中一樣。在類B中,它有一個叫做func的函數,這個函數返回類類型C,我試過c = & b-> func(),這樣它會拋出AccessViolationException,如果我試過c = b-> func ,那麼錯誤是函數調用缺少參數。我該怎麼做,請幫助!
b-> func()返回一個臨時對象實例。您正在將它的地址存儲在MyClass :: c中。當構造函數退出時,臨時被銷燬,MyClass :: c包含無效地址。稍後調用otherfunc(),並使用'c'中的無效地址導致訪問衝突。 – tukra
謝謝您的回覆。這有助於我理解。對於這個特定的問題,你知道我有什麼辦法可以實現它嗎?我真的很感激。@ tukra – Chen