Erro de compilação "conversão perde qualificadores" em C ++
Eu corri para um problema interessante durante a depuração de mapas de tipos SWIG hoje. Alguém quer me esclarecer porque o Visual C ++ 2008 lança um erro de "conversão perde qualificadores" ao converter deourLib::Char *
paraconst ourLib::Char * &
? eu penseiType *
->const Type *
foi uma conversão trivial e (ao chamar funções)Lvalue
->Lvalue &
também.
EDIT: A solução que acabamos indo com:
// 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);
};
}
Removendo oconst
deconst ourLib::Char * tmp
causa o erro que descrevi.