1

我尝试使用 boost optional 并且效果很好,但是我找不到调用包装类型的成员函数的方法。这是设计的还是?我猜是因为调用未初始化的 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”的成员</p>

4

1 回答 1

2

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

于 2012-03-02T03:00:35.263 回答