奇怪的是,我在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'的存在足以讓我不想回答一個問題! :) –