編譯下面的代碼時出現以下錯誤。我很困惑,無法弄清楚這裏有什麼問題。成員函數指針解除引用是否錯誤?「操作符不匹配 - > * pos - > * op」
錯誤:
#g++ fp.cpp
fp.cpp: In member function âvoid Y::callfptr(void (X::*)(int))â:
fp.cpp:33: error: no match for âoperator->*â in âpos ->* opâ
fp.cpp
#include <iostream>
#include <vector>
using namespace std;
class B {
// some base class
};
class X : public B {
public:
int z;
void a(int a) {
cout << "The value of a is "<< a << endl;
}
void f(int b) {
cout << "The value of b is "<< b << endl;
}
};
class Y : public B {
public:
int b;
vector<X> vy;
void c(void) {
cout << "CLASS Y func c called" << endl;
}
void callfptr(void (X::*op)(int));
};
void Y::callfptr(void (X::*op) (int)) {
vector<X>::iterator pos;
for (pos = vy.begin(); pos != vy.end(); pos++) {
(pos->*op) (10);
}
}
是解決我的問題,並很好的解釋太... – user1663533 2013-04-24 11:30:45
@ user1663533十分感謝:很高興它幫助:) – 2013-04-24 11:31:22