gpt4 book ai didi

非 const 指针成员上的 C++ const 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:58 25 4
gpt4 key购买 nike

我想知道如何通过 const 方法保护非 const 指针成员不受对象影响。例如:

class B{
public:
B(){
this->val=0;
}

void setVal(){
this->val = 2;
}

private:
int val;
};

class A{
public:
A():b(new B){}
void changeMemberFromConstMethod() const{
this->b->setVal();
}
private:
B * b; // how to protect data pointed in A::changeMemberFromConstMethod
}

是否可以“保护”他的方法指向的 A::b 数据?在网络上进行了大量研究后,尚未找到满意的响应。

感谢您的帮助。

最佳答案

可能是这样的:

template <typename T>
class deep_const_ptr {
T* p_;
public:
deep_const_ptr(T* p) : p_(p);

T* operator->() { return p_;}
const T* operator->() const { return p_;}
};

class A {
deep_const_ptr<B> b = new B;
};

deep_const_ptr 的行为类似于 A 的 const 方法中的 const T* const 指针,并且类似于 T* 在非常量方法中。进一步充实类(class)留给读者作为练习。

关于非 const 指针成员上的 C++ const 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com