使用VS2008託管C++來封裝dll。本地方法採用一系列單個const char *值和一組char *值。要做出表率作用:將字符串^和字符串^集合轉換爲常量字符*
Function1(char * value1, TF_StringList& catList);
TF_StringList是一個DLL類3種插入方法,一個我想使用的是:
TF_StringList::insert(const char* str);
所以我成立了一個包裝方法:
WrapperClass::callFunction(String^ mvalue1, ArrayList mcatList);
mvalue1使用轉換爲const char *:
const char* value1 = (char*)(Marshal::StringToHGlobalAnsi(mvalue1)).ToPointer();
然而,當到達字符串的集合,我遍歷它使用索引獲取每個字符串:
String^ mstr = mcatList[i];
試過將字符串轉換^爲const char *和在任何情況下,TF_StringList每路: :insert(const char * str)方法拋出一個C2663錯誤,它與值的常量有關。 問題是什麼?
鑑於錯誤是在非const函數調用insert(const char * str)上拋出的,它所抱怨的「this」指針是str。我的問題是如何從ArrayList中得到字符串作爲插入函數正在查找的「const char *」? 我完全知道char *指針需要清理,但只需要清理已經成功創建的內容。現在我在創建事物時遇到問題。 我的研究表明,您發佈的鏈接僅涵蓋了C2663的一個原因。 – 2010-05-03 18:07:28
「this」指針不是str。我建議你發佈真正的代碼,可以重新編譯這個編譯錯誤。 – 2010-05-03 20:10:46
如果您是道歉的話,它所抱怨的這個指針是TF_StringList的實例指針,我聲明爲const,實例化並試圖通過insert方法添加字符串。刪除了const修飾符,它工作正常。謝謝 – 2010-05-04 10:58:11