我可以在不返回常量引用的情况下为调用者提供常量引用吗



我想在概念上做一些类似的事情。

enum class Status {
READY,
NOT_READY
};
class Foo {
public:
Status get_foo(const ExpensiveToCopyType& f) {
if (is_ready) {
f = m_foo;
return Status::READY;
} else {
return Status::NOT_READY;
}
}
private:
bool is_ready;
ExpensiveToCopyType m_foo;
}

重要的是,我希望能够为调用方提供m_foo的只读句柄,并指示它是否处于有效状态。它将始终存在,但它可能处于或可能不处于从调用方上下文有效的状态。例如,考虑它是要被绘制到屏幕上的东西,并且如果它是";未准备好";但不会导致无效访问。

表面上,这可以用std::shared_ptr或类似的东西来实现,但我想知道参考文献是否可能。

我可以在不返回常量引用的情况下为调用方提供常量引用吗?

不,不能。您可以提供一个指针。

但是,我建议同时返回引用(或者更确切地说,返回指针(和有效性。如果引用在无效的情况下是无用的,那么一个简单的解决方案是只返回一个指针;如果状态为无效,则为null。

最新更新