是否有可能創建類似C的字符串(char *)數據只能設置一次的結構?是否有可能創建只有一次C可設置字符串(char *)數據的結構?
會是這樣的:
struct raw {
static const char * request;
};
我需要的是結構,可以在寫入一次數據,並以這種東西應該string.c_str(的可轉換結果)有什麼方法來創建這樣的事情在C++?
是否有可能創建類似C的字符串(char *)數據只能設置一次的結構?是否有可能創建只有一次C可設置字符串(char *)數據的結構?
會是這樣的:
struct raw {
static const char * request;
};
我需要的是結構,可以在寫入一次數據,並以這種東西應該string.c_str(的可轉換結果)有什麼方法來創建這樣的事情在C++?
你可以這樣做:
struct raw {
raw(const char* request_in) { request = request_in; }
const char* request;
};
這不會阻止代碼更改指針 – 2012-01-27 02:58:45
出了什麼問題好老的封裝?問題標籤說C++,因此允許類和私人數據。在類方案中,私有變量可以通過類方法寫入,但不能由程序的其餘部分寫入。這將覆蓋風險降低到可以忽略的程度。另一方面,如果你想防範超級細菌和惡意影響,那麼沒有任何缺乏記憶保護的人工操作將會有所幫助。在Windows上,這是通過VirtualAlloc()/ VirtualProtect()API完成的。
你應該說明要解決的問題是什麼,而不是你想要的解決方案的問題。什麼是你真的需要?
的回答你的問題其實很簡單,但我擔心的問題是更深我你的設計...
struct raw {
const char * const data;
};
raw r = { "hi there" };
或者你可以(應該)提供一個構造函數。現在如果你的意思是用一個字符串調用c_str()
的結果初始化它,那麼你肯定會遇到麻煩,因爲返回的指針只有在修改字符串的下一個操作之前纔有效。你可以strdup
的C字符串,但你必須管理重複串...
然後是這樣的:
struct raw {
raw(const char* request_in):request(request_in) {}
const char* const request;
};
我不想,如果可以實現讀/寫的基礎設施。 – myWallJSON 2012-01-27 02:09:12
只有一次?每個結構實例或每個進程的生命週期 – 2012-01-27 02:10:33
每個結構實例 – myWallJSON 2012-01-27 02:26:58