文字列に含まれるものを出力して出力したいという問題がvoid *
あります。コンパイルの瞬間、コンパイラーはポインターが何を指しているのかわからないことがわかっているので、一種のキャスト(*(void*)
文字列にキャスト)を使用すると思いますstatic_cast:
std::string get_Info_Field (std::string nameTab,int IDF)
{ ostringstream os;
iter=Inst_Data.find(nameTab);
if(iter!= Inst_Data.end())
{ iterF=(iter->second).find(IDF);
if(iterF!=(iter->second).end())
{os<<*static_cast<std::string*>(iterF->second.value);}
else { os<<""; }
}
else { os<<"";}
return os.str();
};
これiterF->second.value
は、void*
任意の型(int、string、float、long、char ..)を指すことができる値を取得したいということです。私の質問は、それは安全ですか?タイプに関係なく、ポインターの正しい値を返しますか? 私はそれが機能することをテストしましint
たが、残りについてはわかりません。
どんな助けでも大歓迎です。