大概不是。这里是我的使用情况:指针是否可以指向const空类或非const类?
我有两个类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(): b_(&null_b) {};
因为B_不能指向一个const变量。如果不是“空B对象”,b_需要指向可变B对象。
使全局非常量解决问题,但我想保护常量,所以我可以保证“空对象”永远不会改变。
FWIW,这涉及一个大型项目,其中b_指向另一个类中B对象的向量。我可以向该矢量添加一个空B对象,但这会让我觉得它很糟糕。
有没有解决我的问题的方法或模式?
我可能不应该建议这个,但... const_cast? – Borgleader
您是否在寻找Flyweight?但是,请记住,所有的指针在逻辑上会是const – sehe
@Borgleader这对此有何帮助?你不能在运行时决定const_cast指针为const(如果它指向你的Nil对象) – sehe