讓我們假設有:類 - 獲取函數 - 返回多個值
Class Foo{
int x,y;
int setFoo();
}
int Foo::setFoo(){
return x,y;
}
所有我想要實現的是形成我get函數返回多個值。我怎樣才能做到這一點?
讓我們假設有:類 - 獲取函數 - 返回多個值
Class Foo{
int x,y;
int setFoo();
}
int Foo::setFoo(){
return x,y;
}
所有我想要實現的是形成我get函數返回多個值。我怎樣才能做到這一點?
C++不支持多個返回值。
您可以通過參數恢復或創建一個輔助結構:
class Foo{
int x,y;
void setFoo(int& retX, int& retY);
};
void Foo::setFoo(int& retX, int& retY){
retX = x;
retY = y;
}
或
struct MyPair
{
int x;
int y;
};
class Foo{
int x,y;
MyPair setFoo();
};
MyPair Foo::setFoo(){
MyPair ret;
ret.x = x;
ret.y = y;
return ret;
}
而且,應該不是你的方法被稱爲getFoo
?只是在說......
編輯:
你可能想什麼:
class Foo{
int x,y;
int getX() { return x; }
int getY() { return y; }
};
如果我想要做一個'get function',它應該返回我從我的類對象的值是否有一個聰明的方法呢? – 2012-04-12 19:59:17
@BogdanMaier是的,看到編輯答案。 – 2012-04-12 20:01:33
你可以參考參數。
void Foo::setFoo(int &x, int &y){
x = 1; y =27 ;
}
您不能返回超過1個變量。 但是你可以通過引用傳遞,並修改該變量。
// And you pass them by reference
// What you do in the function, the changes will be stored
// When the function return, your x and y will be updated with w/e you do.
void myFuncition(int &x, int &y)
{
// Make changes to x and y.
x = 30;
y = 50;
}
// So make some variable, they can be anything (including class objects)
int x, y;
myFuncition(x, y);
// Now your x and y is 30, and 50 respectively when the function return
cout << x << " " << y << endl;
編輯:要回答你如何讓問題:除了只返回1個變量,傳遞一些變數,所以你的函數可以對其進行修改,(當返回他們),你會得到他們。
// My gen function, it will "return x, y and z. You use it by giving it 3
// variable and you modify them, and you will "get" your values.
void myGetFunction(int &x, int &y, int &z)
{
x = 20;
y = 30;
z = 40;
}
int a, b, c;
// You will "get" your 3 value at the same time when they return.
myGetFunction(a, b, c);
C++不允許您返回多個值。你可以返回一個包含多個值的類型。但是你只能從C++函數返回一個類型。
例如:
struct Point { int x; int y; };
Class Foo{
Point pt;
Point setFoo();
};
Point Foo::setFoo(){
return pt;
}
在C你真的不能返回多個值++。但是你可以參考
您不能返回多個對象本身修改多個值,但你可以做的是請使用std::pair
從<utility>
或std::tuple
從<tuple>
(後者只在最新的C++中標準)一起打包多個值並將它們作爲一個對象返回。
#include <utility>
#include <iostream>
class Foo
{
public:
std::pair<int, int> get() const {
return std::make_pair(x, y);
}
private:
int x, y;
};
int main()
{
Foo foo;
std::pair<int, int> values = foo.get();
std::cout << "x = " << values.first << std::endl;
std::cout << "y = " << values.second << std::endl;
return 0;
}
可以使用std::pair
兩個返回更多的人變量和std::tuple
(C++ 11只)。
'std :: pair' –
2012-04-12 20:58:47