我已经声明了整数并尝试返回整数,但它给了我错误

时间:2016-03-04 04:32:25

标签: c++

int a;int b;int c;

如果我想要返回a,b和c。我应该怎么做? 我做了以下方式。但它给了我错误。

return a, b, c;

5 个答案:

答案 0 :(得分:3)

  

如果我想要返回a,b和c。我应该怎么做?

选项1

定义struct并返回struct的对象。

struct MyStruct
{
   int a;
   int b;
   int c;
};

现在你可以使用:

return MyStruct{10, 20, 30};

选项2

使用std::tuple

using MyData = std::tuple<int, int, int>;

然后

return MyData{10, 20, 30};

答案 1 :(得分:0)

虽然C ++不允许您返回多个值,但您可以返回std :: tuples,它们基本相同:

http://en.cppreference.com/w/cpp/utility/tuple

或者,如果你想要更明确一些,你可以返回一个结构。

或者,您可以通过引用获取“输出参数”并覆盖它:

void returnTwoThings(int& out1, int&out2) {
    out1 = 42;
    out2 = 16;
}

int a = 0;
int b = 0;
returnTwoThings(a, b);

// Prints "a: 42 b: 16"
std::cerr << "a: " << a << " b: " << b << std::endl;

答案 2 :(得分:0)

您可以返回包含所有三个整数的struct

struct IntTrio
{
    int a;
    int b;
    int c;
}

IntTrio foo()
{
    int a, b, c;
    // ...
    return {a, b, c};
}

您也可以返回std::tuple<int, int, int>,虽然返回的大括号语法在C ++ 14中不起作用,但您需要std::make_tuple

或者您只需返回您喜欢的固定大小的容器,例如包含所有三个值的std::array<int, 3>

答案 3 :(得分:0)

在C ++或C中,您只能返回一个值/变量。如果要返回一个整数,则它应该只有一个'int'。如果要返回多个值,请将这些值放在'struct'(结构)中并更改函数的返回类型,然后继续返回'struct'。

struct StructureName
{  
   int a;
   int b;
   int c;
};

struct StructureName functionName(input_arguments)
{   
struct StructureName var;
////your operations
var.a=10;
var.b=20;
var.c=30;
return var;
}

答案 4 :(得分:0)

从技术上讲,在C ++中,您只能从函数返回单个值。要返回更多值,您需要将它们包装在结构中。幸运的是,标准为此提供了一种类型:

您可以使用std::tuple返回多个值。

 std::tuple<int,int,int> getStuff()
 {
      return {2, 3, 4};
 }

 int main()
 {
     int x,y,z;

     // Don't need to use a tuple object to catch the result.
     // You can use std::tie to extract the values directly.
     std::tie(x, y, z) = getStuff();



     // If you don't want to use one of the values use `std::ignore`
     std::tie(x, std::ignore, z) = getStuff();


     // Or you can store them in a tuple.
     auto tup = getStuff();

 }