หากคุณมีพารามิเตอร์ที่คุณอาจจำเป็นต้องระบุว่าไม่มีค่าเป็นเรื่องปกติที่จะทำให้พารามิเตอร์เป็นค่าตัวชี้และส่งผ่านค่า NULL
ทางออกที่ดีในกรณีส่วนใหญ่ (จากมุมมองด้านความปลอดภัย) คือการใช้เพิ่ม :: ตัวเลือก สิ่งนี้ช่วยให้คุณผ่านค่าที่เป็นทางเลือกโดยการอ้างอิงและยังเป็นค่าตอบแทน
// 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);
}