0
それは私がやろうとしていることです:私は、関数のポインタであるクラスのメンバー(attribute)を持っています。作成者では、同じクラスのいくつかのメソッドをそのポインタに割り当てる必要があります(いくつかの条件に依存します)。例えば:私はコードブロックでこのコードをコンパイルするとC++:メソッドを同じクラスのfunction-pointer-member(atribute)にアサインすることは可能でしょうか?
class monton
{
private:
protected:
bool (*comparador)(int a, int b);
inline bool mayor(int a, int b) {return a > b;}
inline bool menor(int a, int b) {return a < b;}
...
public:
monton (bool maximo = true)
{
if(maximo) comparador = mayor;
else comparador = menor;
}
...
};
、私はこのエラーを取得する:
error: cannot convert ‘monton::mayor’ from type ‘bool (monton::)(int, int)’ to type ‘bool (*)(int, int)’|
どうもありがとうございました。私はまた、私の関数ポインタを使用するために問題を抱えていた。しかし、私はこのsintaxでそれを使うことができることを発見した: '(this - > * comparador)(x、y)' –
そして私はポインタをこのsintaxに置き換えなければならなかった: 'comparador =&monton :: mayor;' 私はそれが正しいか適切か、それとも将来の問題を作り出しているのだろうかと思います。どうもありがとう。 –
これらの関数の性質(どのような方法でもクラスインスタンスに依存しない)が与えられれば、それらを静的にする方が良いでしょう - そして関数ポインタに代入することができます。 –