今天我在调试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