inn*_*der 5 c++ parameters reference
我在C++中编写一个简单的容器类,类似于存储由键索引的对象的映射.我想提供一个访问器功能,例如:
V& getValue(const K &key);
Run Code Online (Sandbox Code Playgroud)
我在哪里返回对值的引用.
但我也想处理键/值不存在的情况,并能够将某些状态返回给用户(可能有一些原因导致我不想通过某种状态类型与调用者通信).
我想我可以执行以下操作,但调用此方法需要在调用此函数之前构造V对象,并且我只是将内部V对象复制到通过引用传入的对象中,这样看起来很糟糕.
Status getValue(const K &key, V& v);
Run Code Online (Sandbox Code Playgroud)
我也可以这样做:
V &getValue(const K &key, Status &s);
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,这似乎有点笨拙,因为焦点被从状态中吸走,用户可能忘记检查它(但也许这不是我的问题).
所以无论如何都有类似的功能
Status getValue(const K &key, V& v);
Run Code Online (Sandbox Code Playgroud)
在调用之前不需要构造虚拟V对象?您无法传递对引用的引用.我想我可以使用指针并且很乐意这样做,但是创建一个简单的使用和推理功能是不太可取的.
有什么想法吗?
boost::optional如果您不想使用 boost,我会使用或创建一个类似的模板。你boost::optional的函数将如下所示:
boost::optional<MyClass &> getValue(const K &key)
Run Code Online (Sandbox Code Playgroud)