我有一个带有指针的结构.我想这样做,如果一个struct实例是const,那么它的指针内容就无法修改.
struct Foo {};
struct Bar {
Foo /*const goes here if `const Bar`*/ *foo;
};
void f(Bar& bar) {
*bar.foo = Foo(); // OK
}
void g(const Bar& bar) {
*bar.foo = Foo(); // OK - but should be error
}
Run Code Online (Sandbox Code Playgroud)
有没有办法将constness从struct传递给它的指针和引用成员?
封装救援!
只需通过界面进行策略访问:
struct Bar {
Foo * getFoo() { return foo; }
Foo const * getFoo() const { return foo; }
private:
Foo *foo;
};
void f(Bar& bar) {
*bar.getfoo() = Foo(); // OK
}
void g(const Bar& bar) {
*bar.getfoo() = Foo(); // Error!
}
Run Code Online (Sandbox Code Playgroud)