gpt4 book ai didi

c++ - 包含引用的 STL 映射无法编译

转载 作者:可可西里 更新时间:2023-11-01 17:09:43 25 4
gpt4 key购买 nike

以下内容:

std::map<int, ClassA &> test;

给出:

error C2101: '&' on constant

虽然下面

std::map<ClassA &, int> test;

给予

error C2528: '_First' : pointer to reference is illegal

后者似乎 map 不能包含键值的引用,因为它有时需要实例化类,而没有对象就无法实例化引用。但为什么第一种情况不起作用?

最佳答案

在 STL 容器中存储引用是非法的,因为类型必须是可复制构造和可赋值的。无法分配引用。

究竟是什么操作导致第一个错误取决于实现,但我认为它与创建引用而不是立即分配它有关。第二条错误消息看起来实际上与构建 map 索引有关。

如果您的类型很小,您可以将其复制到映射中,或者如果它很大,请考虑改用指针,但请记住容器不会为您解除分配对象,您必须自己明确地这样做。

This您可能会对这个问题感兴趣。

关于c++ - 包含引用的 STL 映射无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com