J'ai rencontré un problème intéressant lors du débogage des typographies SWIG aujourd'hui. Quelqu'un se soucie de m'éclairer pourquoi Visual C++ 2008 jette une erreur "conversion perd qualificatifs" lors de la conversion de ourLib::Char *
à const ourLib::Char * &
? Je pensais que Type *
->const Type *
était une conversion trivial, et (lors de l'appel des fonctions) Lvalue
->Lvalue &
ainsi.C++ "conversion perd qualificatifs" erreur de compilation
EDIT: La solution que nous avons fini par aller avec:
// 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);
};
}
Retrait de la const
de const ourLib::Char * tmp
provoque l'erreur je l'ai décrit.
On dirait qu'il ne devrait pas être une erreur de ce que vous décrivez. Pouvez-vous poster du code qui reproduit l'erreur? En outre, y a-t-il d'autres qualificatifs impliqués autres que const (par exemple volatile)? –
Est-ce supposé être un «char» minuscule? Peut-être que vous devriez poster un peu de code. – GManNickG