c++ - 返回 vector 元素 C++ 的地址

标签 c++ pointers vector memory-address

我有 2 个类,一个称为 A,另一个称为 B。

在类 B 中有一个类型为 A 的元素 vector 。我们称它为 vectorofAs。

我正在 B 中编写一个函数,它返回一个指向 A 的指针,而这个 A 是 vector 的一个元素。

这是函数

A* B::function() const {
 *do something to find the needed element index i*
 return &vectorofAs[i];
}

这不应该返回 vector 的第 i 个元素的地址吗? Intellisense 提示“错误:返回值类型与函数类型不匹配”

最佳答案

您没有指定,但我假设:vectorOfAs被定义为类 B 的成员,类型为 std::vector<A> .

在这种情况下,问题是您的 function定义 const ,这意味着 B 实例的所有成员在这个函数中也是常量。这意味着您的 vectorOfAsconst std::vector<A> .这意味着 &vectorOfAs[i] 的类型是A const *不是A *因为你的函数正在返回。

你有两个选择:

  1. 将函数返回类型更改为 A const *
  2. 使函数成为非常量。

关于c++ - 返回 vector 元素 C++ 的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388440/

相关文章:

c++ - #include<cassert> 做什么/它能做什么

c++ - 获取 QT 代码的纯 C++ 实现

由于父保护构造函数,C++ 无法实例化子类?

c++ - C++中的指针同一个变量有两个不同的地址

c - C 中的指针 : Is cell=&num equivalent to *cell=num?

ios - SCNLookAtConstraint 在幕后做什么?

r - 如何从R中的1行表转换向量

python - numpy/python 中的矢量替换

c++ - OpenCV 3 OpenCL UMat 绘图函数

c - C 中的不完整类型 'struct' 错误