이의 우리가 있다고 가정하자 하나 개 이상의 값을 반환 - 기능을 가져옵니다. 어떻게해야합니까?클래스 -
클래스 -
답변
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 '을 사용하고 싶다면 클래스 객체의 값을 리턴해야한다. –
@BogdanMaier 예, 수정 된 답변 참조. –
당신은 참조 매개 변수를 가질 수 있습니다.
변수를 두 개 이상 반환 할 수 없습니다. 그러나 참조로 전달하고 해당 변수를 수정할 수 있습니다.
// 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에서 여러 값을 반환 할 수 없습니다 ++. 하지만 당신은 객체 자체
하나 이상의 참조로 여러 값을 수정할 수 있지만 당신이 할 수있는 일은 <tuple>
에서 <utility>
에서 std::pair
또는 std::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::tuple
(C++ 11 만)에 대한 std::pair
를 사용할 수 있습니다.
- 1. isJavaType (클래스 클래스) 또는 isUserType (클래스 클래스)?
- 2. 클래스 B의 클래스 A의 변수와 클래스 A의 클래스 B의 포인터는?
- 3. 내가 클래스 클래스 B와 클래스 C를 가지고 클래스
- 4. 코코아, 클래스 클래스 메서드를 호출 저장할 클래스
- 5. Class.inner 클래스 또는 클래스 Instance.inner 클래스?
- 6. 클래스 클래스 - 인스턴스 대 클래스 메서드
- 7. 마커 클래스 하위 클래스
- 8. 클래스 내부 클래스 #
- 9. 클래스 유형에서 클래스 인스턴스화
- 10. 클래스/서브 클래스 객체보기
- 11. file_handle 클래스 - 내가 클래스
- 12. 클래스 내에서 클래스 인스턴스화
- 13. 목록의 클래스 구조 클래스?
- 14. 클래스 내부 클래스
- 15. FlowDocument 클래스 .NET 클래스
- 16. 클래스 문자열을 클래스
- 17. 클래스 하위 클래스 사전
- 18. 클래스 이름으로 클래스 속성
- 19. 추상 클래스 대 클래스
- 20. 클래스 개체에서 클래스 인스턴스화
- 21. 자바 클래스 클래스
- 22. 클래스
- 23. 클래스
- 24. 클래스
- 25. 클래스
- 26. 클래스
- 27. /클래스
- 28. 클래스
- 29. 클래스
- 30. 클래스
'std :: pair ' –