2 つの関数ポインターと 1 つの値を持つ単純なテンプレート クラスがあります。1 つのポインターは比較演算子であり、もう 1 つはオブジェクト (たとえば、getX()) のポインターです。
ヘッダ:
template<class T>
class A {
public:
A(T (*function)(), const bool (*op)(T,T),const T value) :
function(function), value(value), op(op){}
bool valid();
private:
T value;
T (*function)();
bool (*op)(T, T);
};
CPP:
#include "A.h"
template<class T>
bool A<T>::valid(){
return (op(function(),value));
}
したがって、A のインスタンスを作成した場合:
A<float> a = A<float>(x->getX,operator==,20);
valid が呼び出されると、次のようになります。
x->getX() == 20;
実際のヘッダー/クラス定義は正常に機能します。問題は、A のインスタンスを作成するときです。うまくいきません。これは「x->getX」が原因だと思いますが、やりたいことを行う方法はありますか?
ありがとう。
編集::
正確なコンパイラ エラーは次のとおりです。
....\Classes\Objects\B.cpp:42: エラー: 'A::A(未解決のオーバーロードされた関数型、未解決のオーバーロードされた関数型、float)' への呼び出しに一致する関数がありません....\Classes\Objects /Ah:30: 注: 候補は次のとおりです: A::A(T ( )(), const bool ( )(T, T), T) [with T = float] ....\Classes\Objects/Ah: 26: 注: A::A(const A&)
注意: 'x->getX' は float を返します