大佬教程收集整理的这篇文章主要介绍了C:如何确保类成员变量只能在某个方法中修改,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我班上有一个成员变量说:
unsigned int m_important_num;
我班有四种方法.
fun1(); fun2(); fun3(); fun4();
目的:
我只想让fun2()能够改变m_important_num的值.
题:
如果fun2()以外的任何方法改变变量,是否可能使编译错误?
一种可能的方法是声明它const以某种方式授权fun2()来改变const变量?这是一个好的解决方案吗?或者他们是更好的解决方案?
次要问题:
尝试做这样的事情是错误的设计吗?
class S1 { public: void fun2() { /*Modify m_important_num */ } unsigned int getImportantNum() const { return m_important_num;} private: unsigned int m_important_num; }; class S2 : private S1 { public: void fun1(); using S1::fun2; // or void fun2() {S1::fun2();} void fun3(); void fun4(); };
正如Yakk评论的那样,如果func2需要访问S2成员,CRTP可以解决这个问题:
template <typename Derived> class S1 { public: void fun2() { asDerived().foo3(); /*Modify m_important_num */ } unsigned int getImportantNum() const { return m_important_num;} private: Derived& asDerived() { return stataic_cast<Derived&>(*this); } private: unsigned int m_important_num; }; class S2 : private S1<S2> { // friend class S1<S2>; // If required. public: void fun1(); using S1::fun2; // or void fun2() {S1::fun2();} void fun3(); void fun4(); };
以上是大佬教程为你收集整理的C:如何确保类成员变量只能在某个方法中修改全部内容,希望文章能够帮你解决C:如何确保类成员变量只能在某个方法中修改所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。