将一个类中的STL容器传递给另一个类

passing STL container in a class to another class

本文关键字:另一个 STL 一个      更新时间:2023-10-16

我正试图将一个类中的STL容器传递给另一个类例如

typedef std::map<std::string, int*> Container_t;
class A
{
   public:
      const Container_t * get_container() const;
   private:
      Container_t container;
};
const Container_t * A::get_container() const
{
   return &container;
}

当我试图在另一个类中获得这个时,我会得到编译错误说错误:类型为"Container_t*(A::)()const"的参数与的"Container_t*"不匹配

void foo(A * a)
{
   const Container_t * container = a->get_container();
}

如果我能得到const引用而不是指针,那将是最好的。但我不想复制A中函数的返回值。所以它必须是指针或引用。感谢

您需要将函数签名更改为:

const Container_t * get_container() const;

原因是结尾的最后一个const说"调用这个函数并使用它返回的内容不会更改这个对象。"然而,返回一个指向成员变量的(非常数)指针会让调用者可以自由更改该变量,所以你必须返回一个const Container_t *,以确保调用者不会修改成员变量(从而修改对象)。

相关文章: