Bir değerin yokluğunu belirtmeniz gerekebilecek bir parametreniz varsa, parametreyi bir işaretçi değeri yapmak ve NULL olarak iletmek yaygın bir uygulamadır.
Çoğu durumda (güvenlik açısından) daha iyi bir çözüm, boost :: isteğe bağlı kullanmaktır . Bu, isteğe bağlı değerleri referans olarak ve bir dönüş değeri olarak iletmenizi sağlar.
// 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);
}