这里是:我想创建一个void函数,它将接收两个众所周知的值类型和另一个可能是任何类型的值。该代码会是这样:C++发送任何类型的参数给一个函数
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;
}
}
我tryied使值的类型const void*
但我得到一个错误(cast from ‘const void*’ to ‘short int’ loses precision
),因为我只是做了这一点:short name = (short)value
,必须是一些疯狂的绝望的审判,希望能得到幸运。现在,我不知道是否有办法做到这一点,传递任何类型的变量的指针,然后将其转换为它是什么(我知道根据每种情况期望的变量类型。 我该如何做到这一点?!谢谢
这是事实,但在这一点上,为什么不为每个设定不同的功能,避免了开关的情况下。 – Caesar
是的 - 它使'设置'变量不必要。 –
让我们试试这个。当然,我仍然可以使用开关和设置,如果我有不同的情况下,我需要一个int值,例如 – ali