我有一些代碼,其中類從基類繼承。爲什麼我的mem_fun_ref調用沒有「不匹配的函數」?
該基類有一個函數,它在運行時應該調用子函數來實現。也就是說,所有孩子的一般算法都是一樣的,但是步驟的實施應該是不同的。
template<class T>
class Foo
{
public:
Foo(T y):y(y) { for(int i; i < 10; ++i) x.push_back(i); };
protected:
virtual bool IsOk(T, int)=0;
void Run()
{
vector<int>::iterator it, bound;
for(int i; i < 10; ++i)
{
cout << "step " << i << endl;
bound = partition(x.begin(), x.end(), bind2nd(mem_fun_ref(&Foo<T>::IsOk), i));
for (it=x.begin(); it!=bound; ++it)
cout << " " << *it;
};
};
private:
vector<int>x;
T y;
};
class Bar : public Foo<int>
{
public:
Bar():Foo<int>(50){this->Run();};
bool IsOk(int x , int y) {return x == y;}
};
然而,當我這樣做,我得到了以下錯誤消息: no matching function for call to 'mem_fun_ref(bool (Foo<int>::*)(int, int))'
誰能給我提供一些見解,以我在做什麼黃?
mem_fun_ref(bool(Foo :: *)(int,int))''你能告訴我們嗎? –
2011-05-26 12:35:47
@Als:'mem_fun_ref'是一個標準的庫函數。 – 2011-05-26 12:37:09
@Space:是的,只是檢查!我的錯。 – 2011-05-26 12:37:39