ネタ元 → 地味に便利
Nullableってーやつですね。"値を持たない"とか"該当ナシ"を表現できる型。
C++にはございません。
が、ポインタを使って「0なら"該当ナシ"」ってことにすれば表現できんこともなし。
// std::auto_ptr による なんちゃってNullable
#include <memory> // auto_ptr
#include <iostream>
#include <string>
typedef std::auto_ptr<std::string> opt_string;
opt_string katagiri_tugu() { // 片桐: 女性
return opt_string(new std::string("female"));
}
opt_string prince_popi() { // ぽぴ王子: 男性
return opt_string(new std::string("male"));
}
opt_string jama_ikawo() { // ぢゃまいかを: 不詳
return opt_string(); // 返すもんナシ
}
void print(const std::string& name, opt_string gender) {
std::cout << name << ':';
if ( gender.get() ) // get()できればヨシ
std::cout << *gender << std::endl;
else // get() できなば該当ナシ
std::cout << "UNKNOWN\n";
}
int main() {
print("katagiri_tugu", katagiri_tugu());
print("prince_popi", prince_popi());
print("jama_ikawo", jama_ikawo());
}