boost
に付属の構造の一部をいつ使用するのが適切かを理解しようとしており、boost::optional
の使用に関する質問がありました。boost :: optional vs T *
私はboost::optional
を使用して、次のクラスがあるとします。そのgetHelper
はnull
を返すことができ、すなわち、彼らの両方が、同じ意図を伝える
class MyClass {
public:
MyClass() : helper(nullptr) {}
initialise(Helper& helper) {
this->helper = &helper;
}
Helper* getHelper() {
return helper;
}
private:
Helper* helper;
}
:
class MyClass {
public:
MyClass() {}
initialise(Helper& helper) {
this->helper = helper;
}
boost::optional<Helper&> getHelper() {
return helper;
}
private:
boost::optional<Helper&> helper;
}
は、なぜ私は上記の代わりに使用します、呼び出し元はヘルパーが返されたかどうかをテストする必要があります。
'値'、nullptr
と '値ではない'の違いを知る必要がある場合は、boost::optional
を使用するだけですか?
boost :: optional T *のラッパー。 boost :: optionalよりT *を優先してください。はboost :: optionalのためにはC++で変です。 T *はわかりやすいです –
jean