返回向量元素C ++的地址

时间:2013-03-13 14:42:39

标签: c++ pointers vector memory-address

我有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说“错误:返回值类型与函数类型不匹配”

2 个答案:

答案 0 :(得分:4)

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

在这种情况下,问题是您的function已定义为const,这意味着B实例的所有成员也都是此函数内的const。这意味着您的vectorOfAsconst std::vector<A>。这意味着,当您的函数返回时,&vectorOfAs[i]的类型为A const *而不是A *

您有两种选择:

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

答案 1 :(得分:0)

您已将该功能标记为常量。

所以thisconst B*,vectorofAs变成const vector<A>vectorofAs[i]const A&&vectorofAs[i]const A* }这与A*

不同

所以要么将const放在前面,要么删除最后的那个