我有一个简单的模板类,它有两个函数指针和一个值。一个指针是比较运算符,另一个是对象(例如 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);
};
共产党:
#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' 返回一个浮点数