我有一個對象,在其最基本的級別,看起來像這樣:C++常量性爲C包裝
#include <X11/Xlib.h>
class x_link {
public:
x_link()
{
display_ = XOpenDisplay(NULL);
}
~x_link()
{
XCloseDisplay(display_);
}
Display* display_ptr() const
{
return display_;
}
private:
Display* display_;
};
我想知道「常量」如何x_link::display_ptr()
應該在的情況下喜歡這個。
這個較舊的問題Should member functions be 「const」 if they affect logical state, but not bitwise state?給我的印象是,由於我的方法本身不影響對象的邏輯狀態或按位狀態,所以const
是要走的路。
但與此同時,提供Display*
允許用戶打破對象(例如,通過自己調用XCloseDisplay()
),這將是一個非常非常量的事情。
有什麼想法?
爲什麼你提供訪問私人指針? –
,因爲生命短暫,Xlib巨大。除非我在這個對象中提供了一個我關心的Xlib的所有部分的接口(這是可能的,但它意味着一個大的專用對象),其他代碼將需要訪問該指針。 – tecu
這看起來像一個簡單的RAII風格的使用。任何你爲什麼不用'std :: shared_ptr'(或'boost :: shared_ptr')來定製刪除器的原因?它將幫助你獲得像複製構造函數和賦值工作的東西。 –