2012-03-02 6 views
1

부스트 옵션을 사용하여 시도하고 좋은 작동하지만 래핑 된 형식의 멤버 함수를 호출하는 방법을 찾을 수 없습니다. 그게 디자인인가? 아마도 unitialized boost :: optional 변수를 호출하는 멤버 함수는 좋지 않을 것이지만 100 % 확실 해지기를 바랍니다.클래스의 boost :: optional을 사용하여 멤버 함수를 호출 할 수 있습니까?

class test 
{ 
    int test_method() 
    { 
     return 1984; 
    } 
}; 
test tst; 
boost::optional<test> get_test() 
{ 
    boost::optional<test> result(tst); 
    return result; 
} 


// main 

    boost::optional <test> ret_val= get_test(); 
    int x=ret_val.test_method(); 

'수준의 향상 : 옵션 ANGLE_BRACKET 테스트 ANGLE_BRACKET가'test_method '

답변

1

대신 ret_val->test_method()를 사용해보십시오라는 이름의 회원이 없습니다; operator->boost::optional에있는 포함 된 개체에 액세스 할 수 있습니다. 이를 수행하기 전에 optional이 비어 있지 않은지 확인해야합니다.

+0

작동하지만,이 부분은 나를 혼란스럽게합니다. 예를 들어 어떻게 액세스하겠습니까?> boost :: optional :: iterator>? – NoSenseEtAl

+1

'(* ret_val) -> second' 또는'ret_val.get() -> second' –

관련 문제