c + +发送任何类型的参数给函数

编程入门 行业动态 更新时间:2024-10-23 09:31:19
本文介绍了c + +发送任何类型的参数给函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这里有云:我想创建将接收值的两个著名的类型,另一种可能是任何一个无效的功能。在code会是这样的:

Here it goes: I want to create a void function that will receive two well-known type of values and another one that could be anything. The code would be like this:

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使值的类型常量无效* ,但我得到一个错误(投从'常量无效*'到'短整型失去precision ),因为我只是做了这一点:短名称=(短)值,它必须是一些疯狂的不顾一切审讯,希望能幸运。现在,我不知道是否有这样做的方式,通过什么样的变量的指针,然后将其转换为它是什么(我知道变量的类型依赖于各种情况下的期望。我会怎么做呢?谢谢!

I tryied to make the value's type const void* but I get an error (cast from ‘const void*’ to ‘short int’ loses precision) because I just did this: short name = (short)value, which must be some crazy desperate trial, hoping to get lucky. Now, I don't know if there's a way of doing this, pass the pointer of whatever kind of variable then convert it to what it is (I know the type of variable to expect depending on each case. How would I do this? Thanks!

推荐答案

因为你似乎事先知道所有潜在类型的值,并希望不同的行为因的类型,你可以只写了一系列函数重载:

Since you seem to know in advance all the potential types of value, and you want different behavior depending on the type, you can just write a series of function overloads:

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

这消除了运行时交换机的需求。

This eliminates the need for a run-time switch.

更多推荐

c + +发送任何类型的参数给函数

本文发布于:2023-10-31 06:01:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545224.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   参数   类型

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!