我具有以下功能,该功能应该用于创建对象,插入数组并返回对该元素的引用。
Object& add(attr1, attr2,...).
我想知道当数组已满时如何返回空引用。 在这种情况下是否可能或设计错误?
答案 0 :(得分:0)
您在这里有几种选择。 C ++与Python,Java或C#不同。引用只是现有值的别名。引用必须别名。这完全取决于您要执行的操作。
以下是您的选择:
std::vector
或std::deque
。这样,您将不会轻易用完空间。但这有使参考无效的危险。如果您害怕使引用无效,则可以使用std::map
或unordered_map
将索引映射到对象。返回std::optional<std::ref<Object>>
。可以通过以下方式访问此类型的变量x
:
auto x = add(.....);
if (x /* or x.has_value() */) {
std::cout << x->get() << "\n";
x->get() = different_value;
}
最后三个选项是最安全的。