是否可以创建一个C类似字符串(char *)数据只能设置一次的结构?
会是这样的:
struct raw {
static const char * request;
};
我需要的是具有只能写入一次的数据的结构,并且对于这个应该是可转换的string.c_str()的结果是否有任何方法可以在C ++中创建这样的东西?
答案 0 :(得分:2)
您应该说明要解决的问题,而不是您想要的解决方案的问题。你真的需要什么?
你的问题的答案实际上很简单,但我担心问题会更深入你的设计......
struct raw {
const char * const data;
};
raw r = { "hi there" };
或者您可以(应该)提供构造函数。现在,如果你想用一个字符串调用c_str()
的结果来初始化它,那么你肯定会遇到麻烦,因为返回的指针只有在修改字符串的下一个操作之前才有效。你可以strdup
c字符串,但是你必须管理重复的字符串......
答案 1 :(得分:1)
你可以这样做:
struct raw {
raw(const char* request_in) { request = request_in; }
const char* request;
};
答案 2 :(得分:0)
旧的封装有什么问题?问号标签表示C ++,因此允许使用类和私有数据。在类方案中,私有变量可以通过类方法写入,但不能由程序的其余部分写入。这可以将覆盖的风险降低到可以忽略不计。
另一方面,如果你想要保护它的超级细菌和恶意影响,那么没有任何内存保护的操作会有所帮助。在Windows上,这是通过VirtualAlloc()/ VirtualProtect()API完成的。
答案 3 :(得分:0)
然后像这样:
struct raw {
raw(const char* request_in):request(request_in) {}
const char* const request;
};