gpt4 book ai didi

c++ - 如何将 const ref 返回给结构对象,使其所有嵌套结构也都是只读的?

转载 作者:太空狗 更新时间:2023-10-29 23:47:27 25 4
gpt4 key购买 nike

如何防止嵌套结构中的所有成员变量都不可修改?

typedef struct A  
{
int a;
int b;
}A1;

typedef struct B
{
A1* objA;
}B1;

class C
{
public:
const B& GetB() const { return objB; }
PopulateB();

private:
B objB;
};

int main()
{
C objC;
objC.PopulateB();
const B& objB2 = objC.GetB();
objB2.objA->a = 3; // compiler allows this
}

我只想要一个完全只读的结构,我希望它能工作。 (在本例中为 objB2)

最佳答案

指针是常量。它指向的数据不是。这就是指针的工作方式 最好的解决方案是不公开原始指针。 const 引用不允许使用非 const 访问器函数,因此您可以避免棘手的间接访问。

顺便说一句,您不必像那样输入定义结构。这是C主义。

关于c++ - 如何将 const ref 返回给结构对象,使其所有嵌套结构也都是只读的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5601948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com