2012-03-02 61 views
1

我試着使用boost可選,它工作的很好,但我找不到方法來調用包裝類型的成員函數。是由設計還是?我想是的,因爲調用單位boost ::可選變量的成員函數會很糟糕,但我想100%確定。是否有可能具有boost ::可選的類並調用其成員函數?

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(); 

「類boost ::可選ANGLE_BRACKET測試ANGLE_BRACKET」沒有名爲「test_method」

回答

1

使用ret_val->test_method()而是試圖成員; operator->可以訪問boost::optional中包含的對象。請注意,在執行此操作之前,您需要確保optional不是空的。

+0

它的工作原理,但這 - >部分讓我感到困惑,你將如何訪問例如 - >第二個boost ::可選 :: iterator>? – NoSenseEtAl 2012-03-02 03:25:53

+1

'(* ret_val) - > second'或'ret_val.get() - > second'' – 2012-03-02 03:28:26

相關問題