1
我想實現自己的教育字符串實現。對於我定義了一個名爲字符串結構如下:寫入雙重const指針
struct string {
const char *const data;
const int length;
};
我使用函數來創建這些字符串結構,然後我將其分配給變量。
爲了覆蓋const int length
我用下面的訣竅:
*(int *) &result.length = // a int
現在我也想寫信給const char *const data
。 據我所知,第一個const
確保你不能編輯指針指向的項目,第二個const
是你不能指向另一個內存位置的指針。這些是不可變字符串的屬性。所以我的問題是:我怎樣才能像const int length
那樣分配const char *const data
?
編輯:result
如上所示是結構string
等等。爲什麼你要讓所有成員'const'然後違反它們的常量? –
@Daniel Kamil Kozar我只在創建字符串時違反了它。在創建之後,它不應該被改變(因此consts) –
爲什麼不讓類型不透明,以便用戶不能在結構內部鑽研,因此除了使用您提供的訪問函數之外不能修改它。當你添加許多'const'限定符時,你會使結構變得不可修改,因此必須對SO提出問題。你在做什麼並不好;事實上你濫用演員才能使其發揮作用表明你所做的不好。 –