返回vector元素的地址
Returning the address of a vector element C++
我有两个类,一个叫A,另一个叫b。
在B类中有一个包含a类型元素的向量,我们称它为向量a。
我在B中写了一个函数,它返回一个指向a的指针,而a是向量的一个元素。
函数
A* B::function() const {
*do something to find the needed element index i*
return &vectorofAs[i];
}
这不应该返回向量的第i个元素的地址吗?智能感知提示"错误:返回值类型不匹配函数类型"
您没有指定,但我假设:vectorOfAs
被定义为类型为std::vector<A>
的类B的成员。
在这种情况下,问题是你的function
被定义为const
,这意味着B
实例的所有成员在这个函数中也是const。这意味着你的vectorOfAs
是一个const std::vector<A>
。这意味着&vectorOfAs[i]
的类型是A const *
而不是A *
,因为您的函数正在返回。
你有两个选择:
- 将函数返回类型更改为
A const *
- 将函数设置为非const
您已将函数标记为const。
因此,this
是const B*
, vectorofAs是const vector<A>
, vectorofAs[i]
是const A&
, &vectorofAs[i]
是const A*
,这与A*
不同
所以要么在前面放一个const要么去掉后面的const
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 为什么两个矢量元素的地址有这么大的差距?
- 如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 指向结构的指针向量的元素具有相同的地址
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 类实例的地址是否等于类中唯一元素的地址
- 存储 std::list 元素的地址;内存
- 为什么这段代码给出错误......'a'是指针到字符指针,应该存储's'的地址,因为s是指向数组的第一个元素的指针
- 直接从指针/地址访问数组的元素
- 获取向量中元素的地址
- 如何在 2D 字符数组中打印 [x][y] 元素的地址?(C++)
- 按地址从矢量中删除元素
- 指针指向数组中的下一个元素,但地址是相同的.如何
- 为什么'std::string'中第一个元素的地址打印为整个字符串?
- 将结构元素地址设置为C 中的null(单链接列表)
- 将特定数组元素的地址传递到函数
- 访问字符串元素地址
- 第一个字符串元素的地址产生意外结果
- 在向量 (C++) 中保留插入元素的地址