猿问

请问各位大神,c++如何为定义不确定变量类型的参数?

如图,我应该怎么定义main函数里面的number1和number2




手掌心
浏览 2558回答 3
3回答

慕容708150

你这是不可能,也不符合理论的。理由是:number1和number2的类型必须确定,当cin读入数据后存入变量时,变量的内存应该已经分配,如果类型未知那么意味编译器无法知道内存大小。即使C++11标准的auto应该也不行,因为你的写法是定义性声明,定义意味着分配内存,这时如果还未看见变量的样子,auto应该都是无法工作的。由于手头暂时不能使用VS,故未尝试,但不认为auto能工作。一种可能的解决方案是,你按照字符串方式读入数据(string或者char[]),然后自己编写中间代码解析字符串,毕竟不同的数据类型会有不同的外在特征。

湖上湖

来自电脑网络类芝麻团 推荐于2016-04-12可以都是double,或者都是int也可以一个int,一个double,甚至还可以是其它类型。demo.get(number1,number2);时,它会自动匹配,可能完全匹配,也可能是向上匹配,如若是,int,char那么会升级成int,int同理,int ,double会变成double ,double

交互式爱情

c++怎样编写不确定参数个数的函数C++定义的函数是可以支持函数参数个数不确定的。VA_LIST是在C++语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数同时使用...代替多个参数,调用时只需要根据需要传入多个参数。VA_LIST的用法:首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;然后用VA_START宏初始化刚定义的VA_LIST变量;然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);最后用VA_END宏结束可变参数的获取。参考代码:求多个数得平均值123456789101112131415161718#include&nbsp;<cstdarg>#include&nbsp;<iostream>using&nbsp;namespace&nbsp;std;double&nbsp;average&nbsp;(&nbsp;int&nbsp;num,&nbsp;...&nbsp;){&nbsp;&nbsp;va_list&nbsp;arguments;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;A&nbsp;place&nbsp;to&nbsp;store&nbsp;the&nbsp;list&nbsp;of&nbsp;arguments&nbsp;&nbsp;double&nbsp;sum&nbsp;=&nbsp;0;&nbsp;&nbsp;va_start&nbsp;(&nbsp;arguments,&nbsp;num&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Initializing&nbsp;arguments&nbsp;to&nbsp;store&nbsp;all&nbsp;values&nbsp;after&nbsp;num&nbsp;&nbsp;for&nbsp;(&nbsp;int&nbsp;x&nbsp;=&nbsp;0;&nbsp;x&nbsp;<&nbsp;num;&nbsp;x++&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Loop&nbsp;until&nbsp;all&nbsp;numbers&nbsp;are&nbsp;added&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;+=&nbsp;va_arg&nbsp;(&nbsp;arguments,&nbsp;double&nbsp;);&nbsp;//&nbsp;Adds&nbsp;the&nbsp;next&nbsp;value&nbsp;in&nbsp;argument&nbsp;list&nbsp;to&nbsp;sum.&nbsp;&nbsp;va_end&nbsp;(&nbsp;arguments&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Cleans&nbsp;up&nbsp;the&nbsp;list&nbsp;&nbsp;return&nbsp;sum&nbsp;/&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Returns&nbsp;some&nbsp;number&nbsp;(typecast&nbsp;prevents&nbsp;truncation)}int&nbsp;main(){&nbsp;&nbsp;cout<<&nbsp;average&nbsp;(&nbsp;3,&nbsp;12.2,&nbsp;22.3,&nbsp;4.5&nbsp;)&nbsp;<<endl;&nbsp;&nbsp;cout<<&nbsp;average&nbsp;(&nbsp;5,&nbsp;3.3,&nbsp;2.2,&nbsp;1.1,&nbsp;5.5,&nbsp;3.3&nbsp;)&nbsp;<<endl;}&nbsp;
随时随地看视频慕课网APP
我要回答