无法在存储在容器中的指针上调用公共方法

neh*_*iah 1 c++ stl vector

奇怪的是,我在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();
    }
Run Code Online (Sandbox Code Playgroud)

这里我在向量中存储指向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*'
Run Code Online (Sandbox Code Playgroud)

有谁遇到过这样的情况?为什么这被视为编译错误?什么应该是解决这个问题的必要方法?

我用以上编译了以上内容 g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)

Sod*_*ved 7

可能只是运营商优先.错误消息看起来像是试图调用迭代器的sayHai方法.所以这样做:

(*iter)->sayHai();
Run Code Online (Sandbox Code Playgroud)