大概不是。這裏是我的使用情況:指針是否可以指向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