奇怪的是,我在C++中为以下代码获取编译错误。无法调用存储在容器中的指针的公共方法
class A
{
public:
void sayHai()
{
cout << "\n Hai";
}
};
int main(int argc, char** argv)
{
vector< A* > vectorA;
vectorA.push_back(new A());
for (vector< A* >::iterator iter = vectorA.begin();
iter != vectorA.end();
++iter)
*iter->sayHai();
}
这里我存储指向A类的向量中的指针。当我尝试调用一个公共方法时,我收到以下编译错误。
VectorExample.cpp: In function 'int main(int, char**)':
VectorExample.cpp:30: error: request for member 'sayHai' in
'* iter.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator->
[with _Iterator = A**, _Container = std::vector<A*,
std::allocator<A*> >]()', which is of non-class type 'A*'
有没有人遇到过这种情况?为什么这被视为编译错误?解决这个问题的方法是什么?
我编译上面使用g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
单词'Hai'的存在足以让我不想回答一个问题! :) –