首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:list<>iterater宣言后,调用其中的属性报错

2012-09-09 
std:list::iterater声明后,调用其中的属性报错for (listTransceiver*::iterator it transceiverSet.

std:list<>::iterater声明后,调用其中的属性报错
for (list<Transceiver*>::iterator it = transceiverSet.begin(); it != transceiverSet.end(); it++)
{
  it->getAas() //报错
  ...
  ...
}
编译时错误:
error: request for member 'getAas' in '* it.std::_List_iterator<_Tp>::operator-><csls::Transceiver*>()', 
which is of pointer type 'csls::Transceiver*' (maybe you meant to use '->' ?)

但是改为:
it.operator *()->getAas()
就没有问题。

这是为什么呢?
搜索过operator ,但是没有找到有用的东西。

[解决办法]
list<Transceiver*>里边是一个指针,不是个对象。
(*it)->getAas(); 这样就行。
[解决办法]
it是一个指针的泛化, 即就是一个指针, 而it的值也是指针(Transceiver*)。 因此it可以看做是一个指针的指针(Transceiver**)

热点排行