假设我有以下类(class):
#include "ClassB.h"
#include <memory>
class A
{
private:
std::shared_ptr<ClassB> aClassB;
public:
ClassA();
virtual ~ClassA();
std::shared_ptr<ClassB> getClassB() const{
return ClassB;
}
};
现在我可以调用ClassA.getClassB()
来获取指向成员变量aClassB
的智能指针。然而,问题是我可以使用这个智能指针来实际更改成员变量 aClassB
,这是我不想要的。所以基本上我想实现这样的东西:
std::shared_ptr<const ClassB> getClassB() const{
return ClassB;
但是,这不起作用,因为 aClassB
不是 const
。我不想让 aClassB
成为 classA
中的常量,因为 ClassA
的成员函数应该能够更新这个 aClassB 成员变量。
关于如何使用其他类中的 get 函数获取 aClassB
,但不允许从其他类对 aClassB
进行更改的任何建议。
最佳答案
不共享时,您确定要在界面中共享指针吗?
如果你只想允许读取 ClassB
的值,你可以这样做
const ClassB& getClassB() const {
return *aClassB;
}
关于c++ - 使用带有智能指针的 setter/getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33693850/