如何防止嵌套结构中的所有成员变量不可修改?
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
}
Run Code Online (Sandbox Code Playgroud)
我只想要一个完全只读的结构,我希望这可以工作.(在这种情况下objB2)
A.h
class A
{
private:
static const int b = 50;
int c[b];
};
A.cpp
#include "A.h"
const int A::b;
C.cpp
#include "A.h"
Run Code Online (Sandbox Code Playgroud)
编译器向我发出警告,说b多次定义,一个被忽略.我需要在类中定义它,因为我需要初始化数组.或者,我需要使用枚举方法来做到这一点.但我想知道这是否可行?