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

C++ 将一个类中的STL容器传递给另一个类,c++,class,stl,C++,Class,Stl,我试图将一个类中的STL容器传递给另一个类 例如 如果我能得到常量引用而不是指针,那将是最好的。但我不想复制A中函数的返回值,所以它必须是指针或引用。谢谢您需要将函数签名更改为: const Container\u t*get\u Container()const 原因是最后一个const表示“调用此函数并使用其返回的内容不会更改此对象”。但是,返回指向成员变量的(非const)指针可以让调用方自由更改该变量,因此,您必须返回一个const Container\u t*,以确保调用者不会修改成员

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


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

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

const Container\u t*get\u Container()const


原因是最后一个
const
表示“调用此函数并使用其返回的内容不会更改此对象”。但是,返回指向成员变量的(非const)指针可以让调用方自由更改该变量,因此,您必须返回一个
const Container\u t*
,以确保调用者不会修改成员变量(从而修改对象)。

如果您要这样公开此成员,那么将其设置为私有是没有意义的。这是一种糟糕的做法。您的代码在GCC4.5.2上编译成功。您确定该行生成错误吗?它们位于不同的文件中。这也许是为什么?不,这个错误意味着你在做一些肮脏的事情。如果让我猜的话,我会说你在做类似于
Container c=&A::get_Container
的事情。检查生成错误的行并粘贴它…看起来您正在执行
somefunc(a->get\u container)
,而不是
somefunc(a->get\u container())
,但老实说,错误与您显示的代码根本不匹配,因此我怀疑您是否能得到一个有用的答案。您是否将声明(类内)和定义(类外)都更改为
const Container\u t*
?如果你没有,那当然没用了。声明和定义必须匹配。那么你真正的代码是什么,因为如果这是你真正的代码,这将解决问题。
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;
}
void foo(A * a)
{
   const Container_t * container = a->get_container();
}