私はいくつかのコード MISRA の苦情を申し立てようとしていますが、次のコードがあります。
static void DBusCallback(GObject *object, GAsyncResult *res, gpointer user_data) {
std::string * const tmp = reinterpret_cast<std::string*>(user_data);
...
ここで、DBusCallback は call_DBus のコールバックです。
(void)call_DBus(proxy, NULL, &DBusCallback, reinterpret_cast<void*>(new std::string(user_data)));
//最後の pram は、コールバックからの user_data です
コンパイルして正常に実行されますが、gpointer からの文字列変換で次の MISRA 警告が表示されます: MISRA.CAST.PTR.UNRELATED : Object of pointer type 'gpointer' cast to unrelated type 'string*'
ルールは次のとおりです。 MISRA-C++ ルール 5-2-7 (必須): ポインター型を持つオブジェクトは、直接的または間接的に無関係なポインター型に変換してはなりません。【不明 5.2.10(7)】 根拠 ポインタから無関係な型への変換結果は未規定である。
この警告を回避するためのアイデアはありますか?