我目前有一個模板化類,帶有模板化方法。與函子很好地協作,但是在編譯函數時遇到了麻煩。在C++中使用模板化方法交替使用函數函數和函數指針
foo.h中
template <typename T>
class Foo {
public:
// Constructor, destructor, etc...
template <typename Func>
void bar(T x, Func f);
};
template <typename T>
template <typename Func>
void Foo<T>::bar(T x, Func f) { /* some code here */ }
Main.cpp的
#include "Foo.h"
template <typename T>
class Functor {
public:
Functor() {}
void operator()(T x) { /* ... */ }
private:
/* some attributes here */
};
template <typename T>
void Function(T x) { /* ... */ }
int main() {
Foo<int> foo;
Functor<int> F;
foo.bar(2, F); // No problem
foo.bar(2, Function); // <unresolved overloaded function type>
return 0;
}
您是否有多個名爲'Function'的函數? –
'void Function(T x){/ * ... * /}'不是模板,那麼T是什麼? –
@JamesMcNellis編號 – blaze