0

我有2个班,一个叫A,另一个叫B。

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

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

这是功能

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

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

4

2 回答 2

4

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

在这种情况下,问题在于您的functionis defined const,这意味着实例的所有成员B在此函数中也是 const 。这意味着你vectorOfAs是一个const std::vector<A>. 这意味着您的函数返回的类型&vectorOfAs[i]不是。A const *A *

你有两个选择:

  1. 将函数返回类型更改为A const *
  2. 使函数非常量。
于 2013-03-13T14:47:31.053 回答
0

您已将该函数标记为 const。

thisa 也是如此const B*,vectorofAs 变成 a const vector<A>,并且vectorofAs[i]isconst A&&vectorofAs[i]is aconst A*与 an 不同A*

所以要么在前面放一个 const 要么在最后删除一个

于 2013-03-13T14:45:42.800 回答