ここでは、次のように説明します。2つのよく知られた型の値を受け取るvoid関数を作成したいことがあります。私はちょうどこのでしたので、私は値の型const void*
を作るためにtryiedC++は任意の型の引数を関数に送ります。
void change_settings(string element, short setting, ??? value) {
switch (setting) {
case ST_NAME:
// Cast value to string or char* and change element.name
break;
case ST_AMOUNT:
// Cast value to integer and change element.amount
break;
case ST_ENABLED:
// Cast value to boolean and change element.enabled
break;
}
}
が、私はエラー(cast from ‘const void*’ to ‘short int’ loses precision
)を取得:いくつかのクレイジーな絶望的な裁判でなければならないshort name = (short)value
を、幸運を期待して、コードは次のようになります。さて、私はこれを行う方法があるかどうかわからない、何らかの変数のポインタを渡して、それを何に変換するか(それぞれの場合に応じて期待する変数の型を知っている) どうすればよいだろう?ありがとう
を使用する必要があります。 – Caesar
ええ、それは 'setting'変数を不要にします。 –
これを試してみましょう。もちろん、私はint値を必要とするケースが異なる場合でもswitchとsettingを使うことができます。たとえば、 – ali