今日、SWIGタイプマップのデバッグ中に興味深い問題が発生しました。Visual C ++2008がからに変換するときに「変換で修飾子が失われる」エラーがスローされる理由を教えてourLib::Char *
くださいconst ourLib::Char * &
。私はType *
->const Type *
は些細な変換であり、(関数を呼び出すとき)Lvalue
->Lvalue &
も同様だと思いました。
編集:私たちが最終的に行った解決策:
// 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
fromを削除するconst ourLib::Char * tmp
と、説明したエラーが発生します。