對C++來說是相當新穎的。假設我有一個類:C++帶指針作爲參數的外部函數,用於具有成員函數的類中使用
class A
{
private:
double m_x, m_y;
public:
A(double x, double y): m_x {x}
{
m_y = extF(m_x, y, *intF);
}
double intF(double x) { return 2*x; }
};
而且它利用外部全局的功能,其他地方定義的:
double extF(double x, double y, std::function<double(double)> f)
{
if (x*y < 0)
return f(x);
else
return f(y);
}
公式是假的。這不會編譯。我試過簡單的intF
,A::*intF
,&A::intF
,甚至有些非正統的組合,但這只是猜測。問題在於A
類不是唯一使用全局外部函數的類,它應該能夠在運行時作爲用戶選擇。搜索發現了一些答案,說它不可能像這樣做一個成員函數的指針,因爲它需要實例化(?),但我沒有找到解決方案。這可以做到嗎?如果是,如何?
編輯:另外一個問題:如何才能指針成員函數,如果成員函數是const double f(...) const
做了什麼?
如果它不訪問類的任何成員,則使'intF'靜態成員函數。 – songyuanyao
@songyuanyao不幸的是,它確實如此。如果我知道這是一個問題,我會修改要顯示的代碼。 –
@aconcernedcitizen不是你的錯,而是我的錯。我先OT,刪除這些評論。 –