我有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说“错误:返回值类型与函数类型不匹配”
答案 0 :(得分:4)
您没有指定,但我假设:vectorOfAs
被定义为类别为std::vector<A>
的B类成员。
在这种情况下,问题是您的function
已定义为const
,这意味着B
实例的所有成员也都是此函数内的const。这意味着您的vectorOfAs
是const std::vector<A>
。这意味着,当您的函数返回时,&vectorOfAs[i]
的类型为A const *
而不是A *
。
您有两种选择:
A const *
答案 1 :(得分:0)
您已将该功能标记为常量。
所以this
是const B*
,vectorofAs变成const vector<A>
,vectorofAs[i]
是const A&
而&vectorofAs[i]
是const A*
}这与A*
所以要么将const放在前面,要么删除最后的那个