5
考虑下面的代码:如何创建指向可变成员的指针?
struct Foo
{
mutable int m;
template<int Foo::* member>
void change_member() const {
this->*member = 12; // Error: you cannot assign to a variable that is const
}
void g() const {
change_member<&Foo::m>();
}
};
编译器生成一个错误消息。问题是成员m
是可变的,因此它允许更改m
。但函数签名隐藏了可变声明。
如何decalre pointer-to-mutable-member来编译这段代码? 如果不可能,请链接到标准C++。
非常好..解决方法非常完美! – 2010-04-20 13:22:13