大概不会。这是我的用例:
我有两个班A和B。
class A
{
B *b_;
};
class B
{
public:
B(): b_string_("") {};
private:
std::string b_string_;
};
我希望 b_ 始终指向 B 对象。我希望 b_ 指向一个“空”B 对象而不是 nullptr,这样我就可以始终以定义的方式取消引用 *b_ 以获得一个空的 b_->b_string。所以我想我会创建一个全局“空 B 对象”:const B null_b
。但我不能(自然)使用这个 A ctor:
A(): b_(&null_b) {};
因为 b_ 不能指向 const 变量。如果不是“空 B 对象”,则 b_ 需要指向可变的 B 对象。
使全局非常量解决了这个问题,但我想要保护 const 所以我可以保证“空对象”永远不会改变。
FWIW,这涉及一个大型项目,其中 b_ 指向另一个类中 B 对象的向量。我可以向该向量添加一个空的 B 对象,但这让我觉得很笨拙。
有没有解决我的问题的方法或模式?