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**)