Re: [語法] 請問回傳值形態不同,函數如何宣告
我寫個 sample code, 不知是否是您想要的
(我知道用 Template 應該是可以寫得更好..)
也歡迎各位先進指正
// ==========================
// 2010.6.11.
// sample code.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN 200
// ==========================
void* func(bool string_int)
{
if(string_int){
int *ptr = (int*)malloc(sizeof(int));
*ptr = 255;
return (void*)(ptr);
}
else{
char *String = (char*)malloc(sizeof(char)*LEN);
strcpy(String, "goodbye my love");
return (void*)(String);
}
}
// ==========================
int main(int argc, char **argv)
{
printf("%s\n", (char*)func(false));
printf("%d\n", *((int*)func(true)));
return 0;
}
// =============================
請問這種方式是您可以接受的嗎??
不過我想這的確很麻煩唷..
※ 引述《a77d4e06 (喵~>"<||)》之銘言:
: 如題,
: 請問我同一個函數要回傳一個字串或是一個數值,
: 那該函數要設甚麼形態呢??
: 新手發問,感謝回答
: ※ 編輯: a77d4e06 來自: 140.112.4.191 (05/10 21:05)
: 推 VictorTom:應該不行吧?? 不能一開始就分成兩個函數去call嗎?? 05/10 21:09
: → VictorTom:一個變則的方式是, 回傳一個struct, 裡面包含字串與數字 05/10 21:10
: → VictorTom:的型態, 讓caller端檢查固定某個欄位來分辨應該拿字串還 05/10 21:11
: → VictorTom:是拿數字的資料; 其實理論上calling time就要能區分會回 05/10 21:11
: → adrianshum:如果是 "或", 可以順便學學 union 05/10 21:11
: → VictorTom:來的是字串還是數字, 不然caller端你也根本沒辦法收@_@" 05/10 21:12
: 推 maplefog:struct裡再多設一個變數 0時讀數字 1讀字串 應該可以 05/10 21:13
: → VictorTom:有道理, 順便學著用 union 一起上....:D 05/10 21:13
: → a77d4e06:小弟我想回傳的是一個getAccout函數,如果餘額是正的 05/10 21:16
: → a77d4e06:那就回傳餘額,如果是負的就回傳餘額不足字串 05/10 21:16
: 推 VictorTom:通常這種事在caller收到負值時再印餘額不足字串就行吧@@ 05/10 21:18
: → freesamael:那應該是回傳負數由client處理,或直接throw exception 05/10 21:19
: → VictorTom:另一個方法, 餘額正值的也回成字串, 這樣就都是字串了XD 05/10 21:19
: → a77d4e06:那請問INT形態怎麼換成STRING@@? 05/10 21:20
: → maplefog:if(value<0) cout<<餘額不足;else cout<< value; 05/10 21:24
: → dendrobium:是不是應該重新考慮一下你的設計...@@a 05/10 21:28
: → yayarice:這樣設計你要用甚麼變數去存那個回傳值? 05/10 21:31
: → x000032001:要讓函數單純化阿 搞的很複雜@@ 05/10 21:44
: 推 lvlightvivi:void* 回傳之後再CAST? 不過都要用指標 05/10 21:53
: → loveme00835:弄一個父類別然後再用RTTI來做好像也可以 XD 05/10 22:22
: 推 loveflames:用template? 05/10 23:06
: 推 cloudlim:好奇template +1 @@" 這種情況不能用template嗎? 05/10 23:47
: → loveme00835:原po是想要"同一個函式"喔, 用模版並不是同一個函式 05/11 00:32
: → loveme00835:模板寫下去就讓呼叫的方式不同了~ XD 05/11 00:33
--
我期待 我等待
肩狹骨上的翅膀早些長出來
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.126.194.160
→
05/11 02:20, , 1F
05/11 02:20, 1F
→
05/11 02:46, , 2F
05/11 02:46, 2F
推
05/11 14:29, , 3F
05/11 14:29, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 6 篇):