将一个类中的STL容器传递给另一个类
passing STL container in a class to another class
我正试图将一个类中的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 *
,以确保调用者不会修改成员变量(从而修改对象)。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 将一个STL向量有效地分配给另一个STL矢量(WSL问题)
- 从给定的STL容器中提取带有给定谓词的元素到另一个容器
- 将值从STL矢量存储到另一个矢量
- 使用 STL std::merge() 将向量的两个部分合并到另一个向量中
- 如果键已经存在,为什么 stl map 会插入另一个值,而不仅仅是更改它
- 将一个类中的STL容器传递给另一个类
- 如何将 std::unique_ptr<> 从一个 STL 容器移动到另一个容器?
- 如何将stl向量的引用内容复制到另一个stl向量
- 使用STL的哈希列表-我可以将STL列表中的一个项指向另一个项吗?
- 当传递给函数时,如何正确地将一个字符数组的内容复制到另一个字符数组,而不使用STL
- 如何使用boost序列化轻松地序列化包含另一个自定义类的STL容器的自定义类
- 将STL算法传递给另一个函数
- 使用另一个stl向量重新排序stl向量
- 以一种漂亮的STL方式检查一个范围是否是另一个范围的子范围