2015-12-10 48 views
1

我可以从函数one intiger和boolean返回两个值吗?我试图用这种方式做到这一点,但它不起作用。从C++中的一个函数返回两个值

int fun(int &x, int &c, bool &m){ 
     if(x*c >20){ 
      return x*c; 
      m= true; 
      }else{ 
       return x+c; 
       m= false; 
       } 


fun(x, c, m); 
    if(m) cout<<"returned true"; 
    else cout<<"returned false"; 

     } 
+0

您只能从函数返回一个对象,但该对象可以是任意复杂的类型。 – juanchopanza

+0

你可以使用'std :: tuple'。 – Simple

回答

3

您可以创建一个包含两个值作为其成员的结构体。然后您可以返回该结构,并访问各个成员。

谢天谢地,C++为你做了这个pair类。要返回intbool,您可以使用pair<int,bool>

+0

我曾经听过Scott M.谈话,他强烈建议,只要你知道它的实际是什么,就不要使用'pair',我完全同意。 'struct {int day; int month}'总是比'pair '更好,或者'struct {int counter; bool expired}'比'pair '更好。 – user463035818

2

您可以返回包含一些值的struct

struct data { 
    int a; bool b; 
}; 


struct data func(int val) { 
    struct data ret; 
    ret.a=val; 
    if (val > 0) ret.b=true; 
    else ret.b=false; 
    return ret; 
} 


int main() { 
    struct data result = func(3); 
    // use this data here 
    return 0; 
} 
+1

不需要声明之外的'struct data'。 C++不是C,你知道。同样用';'关闭'struct'声明。 – Bathsheba