C++ 2003에서 typedef는 완전한 유형에서만 사용될 수 있습니다. 구문C++, 새 유형으로 함수에 대한 포인터
를 사용하여 C++ 2003 또는 C + +0에서이 문제를 회피하는 방법을 어떤 방법이 있나요template <typename T>
typedef T(*f_function)(T, T, T);
: 따라서, 기능과 유형으로 일반 T에 대한 포인터를 만들 수 없습니다입니다
using (*f_function)(T, T, T); // something like that
나는 클래스 멤버
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;}
같은 기능 FFF 포인터를 사용하고 생성자에서 값을 초기화하고 싶습니다. 그 후 :
int main()
{
A <double> a(f1);
double res = a.getX(1.1, 2.2, 3.3);
}
이 건설은 안전한가요? 이 문제를 해결하는 다른 방법이 있습니까? 당신의 도움을 주셔서 감사합니다.
나는 불완전에 대한 확신 C++ 03 허용 형식 정의를 해요 types :'struct X; typedef X Y; ' –