今天我在調試SWIG類型映射時遇到了一個有趣的問題。任何人都在關注爲什麼Visual C++ 2008在從ourLib::Char *
轉換爲const ourLib::Char * &
時出現「轉換失去限定符」錯誤的原因?我認爲Type *
- >const Type *
是一個簡單的轉換,並且(當調用函數時)Lvalue
- >Lvalue &
也是如此。C++「轉換失去限定符」編譯錯誤
編輯:我們最終的解決方案與打算:
// ourLib::Char is a typedef'ed char on Win32
%typemap(in) const char* (const ourLib::Char* tmp)
{
if (!bapiLua::LuaTraits<ourLib::Char*>::FromLuaObject(L, $argnum, tmp)) SWIG_fail;
$1 = const_cast<char *>(tmp);
}
// And in a different source file, already written:
namespace bapiLua {
template<>
struct LuaTraits<ourLib::Char*>
{
static ourLib::Bool FromLuaObject(lua_State* L, int pos, const ourLib::Char*& o_result);
};
}
去除const ourLib::Char * tmp
的const
使我描述的錯誤。
好像不應該是來自你所描述的錯誤。你能發佈一些代碼來重現錯誤嗎?另外,除了const之外,還有其他限定符嗎(例如volatile)? – 2009-08-10 21:11:10
這是一個小寫的'char'嗎?也許你應該發佈一些代碼。 – GManNickG 2009-08-10 21:11:27