c++的retrun可以回傳二個值嗎 |
答題得分者是:anpino
|
aamihcom
一般會員 發表:57 回覆:40 積分:19 註冊:2003-10-02 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
有2個方法: 1.將回傳值合併成一個structure, 回傳structure即可。
2.將回傳值以reference或pointer的方式加入參數之中,
如: function (int& ReturnValue1,int* ReturnValue2);
在function中將要回傳的值丟給Returnalue參數即可。 -------------------------------
數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
------------------------------- 發表人 - anpino 於 2004/05/17 08:50:58
|
aamihcom
一般會員 發表:57 回覆:40 積分:19 註冊:2003-10-02 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 1.將回傳值合併成一個structure, 回傳structure即可。 第一種方法我不太了解,請版主幫我解答一下.... 是否在宣告時就應該改變了 int __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob) 因為我試不出來假設您要回傳int ReturnValue1與int ReturnValue2, 那麼就宣告一個structure : struct ReturnValues { int ReturnValue1; int ReturnValue2; }; 1) int __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob, ReturnValues& stuReTest) { stuReTest.ReturnValue1 = 1; // 寫入您要的值 stuReTest.ReturnValue1 = 2; ... } 2) ReturnValues __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob) { ReturnValues stuReTest; stuReTest.ReturnValue1 = 1; // 寫入您要的值 stuReTest.ReturnValue1 = 2; ... return stuReTest; }------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- |
adem921
一般會員 發表:1 回覆:3 積分:0 註冊:2004-05-23 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 用RETURN不可已傳兩個值的 除非 IF A ELSE IF B 要傳回兩個值一定要用指標 int *ptr1,*ptr2; 指標前面有*剛學到指標^_^adem921您好: 看您是新手(因為只學到指標), 所以雞婆的告訴你一個觀念: 1個function只能回傳一個物件,或者物件的指標, 也就是說, 它可以回傳int,long,string,class,structure,int*,long*,...等等, 而不單單只是回傳一個值而已。 所以, 可以用上面提到的2個方法來實現回傳多個值: (MSDN也常常出現這種用法。) 1.將回傳值合併成一個structure, 回傳structure即可。 2.將回傳值以reference或pointer的方式加入參數之中。 請仔細看清楚上面的說明, 這2個方法可以實現"回傳多個值"。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- 發表人 - anpino 於 2004/05/31 16:29:08 |
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
|
aamihcom
一般會員 發表:57 回覆:40 積分:19 註冊:2003-10-02 發送簡訊給我 |
版主大大不好意思,我再問一個問題~~ A.將這段加入 FormInterViewAsk.h裡的這個地方
private:
struct ReturnValues
{
int ReturnValue1;
int ReturnValue2;
};
int __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob, ReturnValues& stuReTest)
{
stuReTest.ReturnValue1 = 1; // 寫入您要的值
stuReTest.ReturnValue1 = 2;
} B.將這段加入 FormInterViewAsk.CPP裡
ReturnValues __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob)
{
ReturnValues stuReTest; stuReTest.ReturnValue1 = 1; // 寫入您要的值
stuReTest.ReturnValue1 = 2;
return stuReTest;
}
測試結果有錯誤~我不曉得是那邊出了問題,基本上這些程式碼應該是都沒問題才對...(我有看過了),是否我所加入的位置有誤,請版主指導一下
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 版主大大不好意思,我再問一個問題~~ A.將這段加入 FormInterViewAsk.h裡的這個地方 private: struct ReturnValues { int ReturnValue1; int ReturnValue2; }; 下面2個都是function, 選一個加入cpp即可。 1) int __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob, ReturnValues& stuReTest) { stuReTest.ReturnValue1 = 1; // 寫入您要的值 stuReTest.ReturnValue1 = 2; } //如果你要加入這一個, 那麼在 FormInterViewAsk.h檔裡TFormInterViewAsk 的public區宣告 int __fastcall GetSalaryAdd(AnsiString tAskJob, ReturnValues& stuReTest); 即可 2) ReturnValues __fastcall TFormInterViewAsk::GetSalaryAdd(AnsiString tAskJob) { ReturnValues stuReTest; stuReTest.ReturnValue1 = 1; // 寫入您要的值 stuReTest.ReturnValue1 = 2; return stuReTest; } //如果你要加入這一個, 那麼在 FormInterViewAsk.h檔裡TFormInterViewAsk 的public區宣告 int __fastcall GetSalaryAdd(AnsiString tAskJob); 即可------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- |
Erniel
一般會員 發表:1 回覆:1 積分:0 註冊:2006-08-14 發送簡訊給我 |
測試很久 但結果都不理想 我是使用第二種方式 寫在Class 裡的函式 ReturnValues q; 第一步.ImgClass.h裡的這個地方 有幾各問題需要麻煩大家幫我解答 第二步和第三步 明明是同一個函式 為何資料型態卻不一樣 第二步改回.ImgClass.h裡的這個地方 程式能接受此寫法 同樣有error : Declaration syntax error 宣告錯誤
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |