是否可以拥有类的boost :: optional并调用其成员函数?

时间:2012-03-02 02:41:28

标签: boost optional

我尝试使用boost可选,它工作得很好,但我找不到一种方法来调用包装类型的成员函数。这是设计还是?我想是因为调用unitialized boost :: optional变量的成员函数会很糟糕,但我想100%肯定。

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

'class boost :: optional ANGLE_BRACKET test ANGLE_BRACKET'没有名为'test_method'的成员

1 个答案:

答案 0 :(得分:1)

尝试使用ret_val->test_method()代替; operator->可以访问boost::optional中包含的对象。请注意,在执行此操作之前,您需要确保optional不为空。