【发布时间】:2012-08-25 16:49:33
【问题描述】:
我有一个指向类的指针列表:
list<AbsClient*> clients;
AbsClient 可能是 3 个中的 1 个:TempClient、RegisteredClient、VIPClient。
在 AbsClient 内部有一个受保护的变量:phone_number。
我需要遍历客户列表,并搜索特定的电话号码。
我试过了:
list<AbsClient*>::iterator iter;
for(iter=clients.begin();iter!=clients.end();++iter)
{
if(iter->phone_number == phone)
{
}
}
但它不允许我访问 iter->phone_number:
错误:表达式必须具有指向类的类型
这条线有什么问题?
P.S 是否可以使用 stl::find 函数并以某种方式告诉它通过“phone_number”变量进行搜索?
谢谢
【问题讨论】:
-
if(iter->phone_number == phone)应该是if((*iter)->phone_number == phone)因为它指向 value_type of (AbsClient*) 另一个指向 AbsClient 的指针 -
@Mr.Anubis if((*iter)->phone_number == phone) 给我一个错误说:成员 AbsClient::phone_number 无法访问。并且:没有运算符“==”与这些操作数匹配。