クラスと関数があるとします
class A
{
int a;
int b;
int mul()
{
return a+b;
}
};
...
void func(int af, int bf, int (*fc)())
{
...
}
メイン関数では、関数はクラス A のメソッドを使用することになっています
int main
{
A as;
...
func(as.a, as.b, as.mul);
}
ただし、それはできません。コンパイラは、合格していると言い続けます
(int&, int&, 'unresolved overloaded function type')
候補の関数に
(int, int, void(*)()).
それはなぜですか、またクラスのメソッドを別の関数に渡す方法は?
ああ、問題をもう少し明確にする必要があると思います。func(...)
実際には、私が取り組んでいるアルゴリズムの関数です。そしてclass A
、アルゴリズムを使用してシミュレーションを行うモデルです。したがって、関数 B で A のインスタンスを具体的に使用するとは思いませんが、A のメソッドとコンポーネントのみを渡し、それらを操作します。
更新: クラス A で静的メソッドを使用することについて言及している人もいますが、これはまだ部分的な解決策です。静的メソッドmul()
を使用すると、a と b の両方が静的であると主張せざるを得なくなります。また、A の複数のインスタンスを使用する必要があり、メイン関数の各インスタンスでメソッド a、b が異なる場合、静的変数の使用は単純に失敗します。
それで、静的変数/メソッドを使用せずにこれを修正する方法について他の提案はありますか? Python などのスクリプト言語では、どのような型のメソッドを渡しても基本的には問題にならなかったことを覚えています。C++ で同様のことができないのはなぜですか? または、これを行うのに役立つ C++ の回避策はありますか?