Nếu bạn có một tham số trong đó bạn có thể cần chỉ ra sự vắng mặt của một giá trị, thì đó là cách thông thường để biến tham số thành giá trị con trỏ và truyền vào NULL.
Một giải pháp tốt hơn trong hầu hết các trường hợp (từ góc độ an toàn) là sử dụng boost :: tùy chọn . Điều này cho phép bạn chuyển các giá trị tùy chọn theo tham chiếu và cũng là giá trị trả về.
// Sample method using optional as input parameter
void PrintOptional(const boost::optional<std::string>& optional_str)
{
if (optional_str)
{
cout << *optional_str << std::endl;
}
else
{
cout << "(no string)" << std::endl;
}
}
// Sample method using optional as return value
boost::optional<int> ReturnOptional(bool return_nothing)
{
if (return_nothing)
{
return boost::optional<int>();
}
return boost::optional<int>(42);
}