2
在C++ 2003中,typedef只能用於完整類型。因此,它不是允許創建指向函數的指針和通用T作爲一個類型:C++,作爲新類型的函數指針
template <typename T>
typedef T(*f_function)(T, T, T);
有什麼辦法如何使用語法
逃避在C++ 2003或C++ 0x中這個問題using (*f_function)(T, T, T); // something like that
我想使用指針的函數FFF作爲一類構件
template <typename T>
class A
{
public:
f_function fff;
A() {fff = NULL;}
A(f_function pf){fff = &pf;}
};
template <typename T>
T f1(T x, T y, T z) { return x + y + z;}
template <typename T>
T f2(T x, T y, T z) { return x - y - z;}
並在構造初始化它的值。隨後:
int main()
{
A <double> a(f1);
double res = a.getX(1.1, 2.2, 3.3);
}
這種結構是否安全?有沒有其他方法可以解決這個問題?謝謝你的幫助。
我敢肯定C++ 03允許類型定義不完整類型:'struct X; typedef X Y;' –