#include<iostream.h>
class A{
private:
int a,b;
public:
void set_a(int num, int sum);
int set_b();
};
void A::set_a(int num, int sum)
{
a=num;
b=sum;
}
int A::set_b()
{
return (a,b);
}
main()
{
A ob1,ob2;
ob1.set_a(66,33);
ob2.set_a(77,11);
cout << ob1.set_b() <<endl;
cout << ob2.set_b() << endl;
return 0;
}
제가 혹시나 해서 return a;
return b;
를 해보았는데 a꺼만 출력되더라고요 너무 궁그미해요 ㅜㅜ
일단 리턴을 왜 하는지 생각해 보셈. 화면출력용? 파일출력용? 아니면 DB dml용? 함수의 필수조건은 인풋/아웃풋인데 아웃풋은 단순히 return으로만 처리하는게 아닙니다. 무슨 말이지 아실랑가...|
함수하나에 정 리턴을 두개이상하고 싶다면 파라미터로 포인터를 쓰던가 참조를 쓰던가..
잘모르겠어요 초보라서 ㅜㅜ
a를 리턴하는 함수와 b를 리턴하는 함수를 각각 따로 만드시던지
struct나 class를 또 하나 만들어서 감싼 다음에 리턴하시던지... 근데 이건 배보다 배꼽이 더 클 테니 고려대상이 못 되고
지저분하겠지만 call by address나 call by reference를 활용해서 인자를 통해 값을 넘기시던지
옆에 있으면 가르쳐 주고 싶은데... 결론만 얘기하자면 return으로 두개값을 못 넘겨요. 넘기고 싶으면 구조체를 쓰던가...
std::pair<T,R>이나 std::tr1::tuple<T1,T2> 혹은 boost::tuple<T1,T2>을 쓰시던지
극단적인 선택이라면 아예 값 두개 이상을 리턴할 수 있는 언어로 옮기는 것도 괜찮군요. Python이라던가 Lua라던가 등등
가장 쉬운건 첫번째 방법입니다. 값을 두개 이상 리턴 못 한다는 걸 인정하고 그냥 함수 두 개를 만드는 거죠.
진짜 좆같게 2개리턴할꺼면 문자열로 바꾸고 a 랑 b 연결자로 묶고 리턴한다음에 짤라
ㄴ 그건 너무 좆같잖아
/* complex number addition : c_r = c1 + c2 */ void add(int a1, int b1, int a2, int b2, int *a_r, int *b_r) { *a_r = a1 + a2; *b_r = b1 + b2; } 이렇게 할 수도 있긴 해.