3 回答
TA貢獻1831條經驗 獲得超4個贊
你這是不可能,也不符合理論的。理由是:
number1和number2的類型必須確定,當cin讀入數據后存入變量時,變量的內存應該已經分配,如果類型未知那么意味編譯器無法知道內存大小。即使C++11標準的auto應該也不行,因為你的寫法是定義性聲明,定義意味著分配內存,這時如果還未看見變量的樣子,auto應該都是無法工作的。由于手頭暫時不能使用VS,故未嘗試,但不認為auto能工作。
一種可能的解決方案是,你按照字符串方式讀入數據(string或者char[]),然后自己編寫中間代碼解析字符串,畢竟不同的數據類型會有不同的外在特征。
TA貢獻2003條經驗 獲得超2個贊
來自電腦網絡類芝麻團 推薦于2016-04-12
可以都是double,或者都是int
也可以一個int,一個double,甚至還可以是其它類型。
demo.get(number1,number2);時,它會自動匹配,可能完全匹配,也可能是向上匹配,如若是,int,char那么會升級成int,int
同理,int ,double會變成double ,double
TA貢獻1712條經驗 獲得超3個贊
c++怎樣編寫不確定參數個數的函數
C++定義的函數是可以支持函數參數個數不確定的。VA_LIST是在C++語言中解決變參問題的一組宏,所在頭文件:#include <stdarg.h>,用于獲取不確定個數的參數同時使用...代替多個參數,調用時只需要根據需要傳入多個參數。
VA_LIST的用法:
首先在函數里定義一具VA_LIST型的變量,這個變量是指向參數的指針;
然后用VA_START宏初始化剛定義的VA_LIST變量;
然后用VA_ARG返回可變的參數,VA_ARG的第二個參數是你要返回的參數的類型(如果函數有多個可變參數的,依次調用VA_ARG獲取各個參數);
最后用VA_END宏結束可變參數的獲取。
參考代碼:求多個數得平均值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <cstdarg> #include <iostream> using namespace std; double average ( int num, ... ) { va_list arguments; // A place to store the list of arguments double sum = 0; va_start ( arguments, num ); // Initializing arguments to store all values after num for ( int x = 0; x < num; x++ ) // Loop until all numbers are added sum += va_arg ( arguments, double ); // Adds the next value in argument list to sum. va_end ( arguments ); // Cleans up the list return sum / num; // Returns some number (typecast prevents truncation) } int main() { cout<< average ( 3, 12.2, 22.3, 4.5 ) <<endl; cout<< average ( 5, 3.3, 2.2, 1.1, 5.5, 3.3 ) <<endl; } |
- 3 回答
- 0 關注
- 2680 瀏覽
添加回答
舉報
