在我的基類,這是一個公共的非靜態成員函數:如何調用該函數在派生類中處理handle_post(函數調用缺少參數列表創建指針)
void BaseClass::SetPorcessMethod()
{
//do something
Listener.support(methods::POST, this->HandlePost);
//do something
}
在功能以上,Listener
是一個靜態成員變量。 函數HandlePost
是由所有派生類實現的純虛函數。我想用this
指針從不同派生類中調用不同的HandlePost
。 像:
class BaseClass
{
public:
static http_listener listener;
void SetPorcessMethod();
virtual void HandlePost((http_request request) = 0;
/*listener is init in constructor , not display here*/
}
class Derived2:public BaseClass
{
void HandlePost(http_request request);
}
class Derived1:public BaseClass
{
void HandlePost(http_request request);
}
Derived1 instance1;
instance1.SetPorcessMethod();
Derived2 instance2;
instance2.SetPorcessMethod();
然而,它顯示BaseClass::HandlePost:function call missing argument list use &BaseClass::HandlePost:function to create a pointer to member
。我知道這是因爲Your code attempts to pass a pointer-to-member-function, which cannot be converted to a pointer-to-function. This is because a pointer-to-member-function can only be called on an object, so it wouldn't know what object to use.
Function call missing argument list to create pointer 但我應該怎樣做,這樣我可以從派生類support()
調用該函數?
這個問題中缺少一些重要的東西,因爲它根本沒有意義。 –
@CrazyEddie你需要哪些信息? – firstaccount
你不明白的「use&BaseClass :: HandlePost」的哪一部分?看起來像一個相當明確的錯誤消息,它是正確的:這是指定指向類方法的指針的正確語法。請注意,這是一個指向類方法的指針,而不是一個函數,所以你的'support()'方法的第二個參數最好是'void(BaseClass :: *)(http_request)'。如果不是這樣,你會遇到更大的問題,比如破碎的課程設計。 –