2014-11-02 172 views
0

你好,我有一個小問題,我會很高興,如果你能告訴我如何解決它。 所以我有一個功能,該功能的實現是這樣的:函數返回參數C++

int* getMytree() 

函數應該返回三個變量。變量被定義爲public。

如何返回三個參數?

+0

如果你需要我的adv冰,功能應該是模塊化的,就是計算單個結果。如果需要,可以使用按引用傳遞來修改傳入的參數。 – 2014-11-02 14:24:37

+0

通過引用的方法看起來像'void getMytree(int&a,int&b,int & c);' – 2014-11-02 14:38:35

+0

@Mahmoud Fayez:如果這些參數是相關的,那麼他們分享大量計算並分解成單獨函數的機會很高 – 2014-11-02 14:40:26

回答

2

對不起,沒有辦法顯式返回函數中的三個值,因爲函數只能返回一個值。然而,你可以做兩件事

1)將這三個參數封裝在一個結構中,然後使函數返回該結構。

struct Book 
{ 
int pages; 
std::string name; 
std::string author 
}; 

Book myFunc(); // This example is just for simplicity. 

2)更簡單地傳遞三個參數的指針/引用,你希望函數改變。

void myFunc (int& page, std::string &name, std::string &author); 
+0

爲什麼用名稱'book'定義一個結構,並將其定義爲'Book'?似乎對我來說有點多餘 – user2079303 2014-11-02 14:29:42

+0

是的,這是多餘的我說的例子只是爲了澄清我自己的問題... – ravi 2014-11-02 14:31:12

+0

@NeilKirk刪除... – ravi 2014-11-02 14:51:02

5

除了包裝內部的三個變量struct

您可以返回std::tuple

std::tuple<int, int, int> getMytree(int id) 
{ 
    // .... 
    // a= , b= c= 
    return std::make_tuple(a,b,c); 
} 

然後用std::tie公共變量:

std::tie(var1, var2, var3) = getMytree() ; 
+1

你沒有提到,如何返回語句應該看起來像? 返回std :: make_tuple(1,2,3); – 2014-11-02 14:36:38

+0

@ rupesh.yadav好點,更新,謝謝 – P0W 2014-11-02 14:39:10