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提出问题。你在做什么并不好;事实上你滥用演员才能使其发挥作用表明你所做的不好。 –