返回vector元素的地址

Returning the address of a vector element C++

本文关键字:地址 元素 vector 返回      更新时间:2023-10-16

我有两个类,一个叫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 *,因为您的函数正在返回。

你有两个选择:

  1. 将函数返回类型更改为A const *
  2. 将函数设置为非const

您已将函数标记为const。

因此,thisconst B*, vectorofAs是const vector<A>, vectorofAs[i]const A&, &vectorofAs[i]const A*,这与A*不同

所以要么在前面放一个const要么去掉后面的const