我有 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
实例的所有成员在这个函数中也是常量。这意味着您的 vectorOfAs
是 const std::vector<A>
.这意味着 &vectorOfAs[i]
的类型是A const *
不是A *
因为你的函数正在返回。
你有两个选择:
- 将函数返回类型更改为
A const *
- 使函数成为非常量。
关于c++ - 返回 vector 元素 C++ 的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388440/