我尝试使用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'的成员
答案 0 :(得分:1)
尝试使用ret_val->test_method()
代替; operator->
可以访问boost::optional
中包含的对象。请注意,在执行此操作之前,您需要确保optional
不为空。