C将任何类型的参数发送给函数

事情就这样了:我想创建一个void函数,该函数将接收两种众所周知的值类型,而另一种可能是任何值.代码如下:

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;
    }
}

我试图使该值的类型为const void *,但出现错误(从’const void *’转换为’short int’会失去精度),因为我这样做是:short name =(short)value,这一定有点疯狂拼命的审判,希望能走运.现在,我不知道是否有办法做到这一点,传递任何类型的变量的指针,然后将其转换为它的值(我知道根据每种情况而期望的变量类型.
我该怎么做?谢谢!

解决方法:

由于您似乎已经预先知道所有可能的值类型,并且您希望根据类型来选择不同的行为,因此可以编写一系列函数重载:

void change_settings(const std::string& element, short setting, const std::string& value);

void change_settings(const std::string& element, short setting, int value);

void change_settings(const std::string& element, short setting, bool value);

这样就无需运行时切换.

上一篇:javascript-从TypeScript中的重写接口自动推断类型


下一篇:android-如何发送意图与任何文件浏览器选择ttf文件?