c++ - 使用带有智能指针的 setter/getter

标签 c++ pointers smart-pointers

假设我有以下类(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/

相关文章:

c++ - 在友元声明中使用限定名称的规则是什么?

c - 指针运算 : strange result in C programm

c++ - 我无法初始化 C 类的 shared_ptr

c++ - 删除链表中的节点 - 段错误

c++ - 指针的返回 vector ——理解

c++ - 我可以拥有非拥有的共享指针吗?

c++ - "The World' s Dumbest Smart Pointer 有什么意义?”

c++ - OpenCV在内存中加载视频

c++ - 如何为 multimap 的插入和删除功能编写 API?

c++ - 如何确定线程模拟级别