[語法] 請問回傳值形態不同,函數如何宣告

看板C_and_CPP作者 (喵~>"<||)時間14年前 (2010/05/10 20:58), 編輯推噓7(7019)
留言26則, 13人參與, 最新討論串1/6 (看更多)
如題, 請問我同一個函數要回傳一個字串或是一個數值, 那該函數要設甚麼形態呢?? 新手發問,感謝回答 ※ 編輯: a77d4e06 來自: 140.112.4.191 (05/10 21:05)

05/10 21:09, , 1F
應該不行吧?? 不能一開始就分成兩個函數去call嗎??
05/10 21:09, 1F

05/10 21:10, , 2F
一個變則的方式是, 回傳一個struct, 裡面包含字串與數字
05/10 21:10, 2F

05/10 21:11, , 3F
的型態, 讓caller端檢查固定某個欄位來分辨應該拿字串還
05/10 21:11, 3F

05/10 21:11, , 4F
是拿數字的資料; 其實理論上calling time就要能區分會回
05/10 21:11, 4F

05/10 21:11, , 5F
如果是 "或", 可以順便學學 union
05/10 21:11, 5F

05/10 21:12, , 6F
來的是字串還是數字, 不然caller端你也根本沒辦法收@_@"
05/10 21:12, 6F

05/10 21:13, , 7F
struct裡再多設一個變數 0時讀數字 1讀字串 應該可以
05/10 21:13, 7F

05/10 21:13, , 8F
有道理, 順便學著用 union 一起上....:D
05/10 21:13, 8F

05/10 21:16, , 9F
小弟我想回傳的是一個getAccout函數,如果餘額是正的
05/10 21:16, 9F

05/10 21:16, , 10F
那就回傳餘額,如果是負的就回傳餘額不足字串
05/10 21:16, 10F

05/10 21:18, , 11F
通常這種事在caller收到負值時再印餘額不足字串就行吧@@
05/10 21:18, 11F

05/10 21:19, , 12F
那應該是回傳負數由client處理,或直接throw exception
05/10 21:19, 12F

05/10 21:19, , 13F
另一個方法, 餘額正值的也回成字串, 這樣就都是字串了XD
05/10 21:19, 13F

05/10 21:20, , 14F
那請問INT形態怎麼換成STRING@@?
05/10 21:20, 14F

05/10 21:24, , 15F
if(value<0) cout<<餘額不足;else cout<< value;
05/10 21:24, 15F

05/10 21:28, , 16F
是不是應該重新考慮一下你的設計...@@a
05/10 21:28, 16F

05/10 21:31, , 17F
這樣設計你要用甚麼變數去存那個回傳值?
05/10 21:31, 17F

05/10 21:44, , 18F
要讓函數單純化阿 搞的很複雜@@
05/10 21:44, 18F

05/10 21:53, , 19F
void* 回傳之後再CAST? 不過都要用指標
05/10 21:53, 19F

05/10 22:22, , 20F
弄一個父類別然後再用RTTI來做好像也可以 XD
05/10 22:22, 20F

05/10 23:06, , 21F
用template?
05/10 23:06, 21F

05/10 23:47, , 22F
好奇template +1 @@" 這種情況不能用template嗎?
05/10 23:47, 22F

05/11 00:32, , 23F
原po是想要"同一個函式"喔, 用模版並不是同一個函式
05/11 00:32, 23F

05/11 00:33, , 24F
模板寫下去就讓呼叫的方式不同了~ XD
05/11 00:33, 24F

05/11 01:18, , 25F
看起來像同一個就好了(逃
05/11 01:18, 25F

05/11 01:30, , 26F
struct 包 type code 欄位 + union,很傳統的解法。
05/11 01:30, 26F
文章代碼(AID): #1Bw0B_jJ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Bw0B_jJ (C_and_CPP)