我有一个带有const
抽象成员的类。由于它是抽象的,因此对象必须位于更高的范围内。但是,它可以在这个更高的范围内进行编辑。我已经制作了这个 MWE,并添加了解释我想要达到的目标的评论(即我知道这并没有达到我想要的目标)。
除了注释掉它之外,还可以做些什么来阻止用户编辑对象。最好是一个白痴证明方法(最好是编译错误)
#include <iostream>
class Foo
{
private:
const int * p_abstract_const;
//int my application this is a pointer to abstract object
public:
Foo(const int * p_new_concrete_const)
{
p_abstract_const = p_new_concrete_const;
}
void printX()
{
std::cout << *p_abstract_const << std::endl;
}
};
int main()
{
int concrete_nonconst = 666;
Foo foo(&concrete_nonconst); // I want this NOT to compile
//const int concrete_const(1);
//Foo foo(&concrete_const); // only this should compile
foo.printX();
concrete_nonconst=999; // so that this will NOT be possible
foo.printX();
}