typedef 를 쓰고 안쓰고의 차이점..

임종규의 이미지

a.cpp
-----------------------------------------
void (**FuncPtrArray)(int);
....
FuncPtrArray = new (void(*)(int))[10];
=========================================

b.cpp
-----------------------------------------
typedef void(*FuncPtrType)(int);
FuncPtrType* FuncPtrArray;
.....
FuncPtrArray = new FuncPtrType[10];
=========================================

a 코드는 컴파일이 안되는데, b 코드는 컴파일이 됩니다.
new 로 배열처럼 할당할려면 기본 생성자가 있어야 한다고 하는데...
typedef 를 하면 기본 생성자를 만들어주는건가요?

아니면 a 코드가 컴파일 되게 할려면 어떻게 해야될까요?

winner의 이미지

new (void (*[10])(int));

codepad.org 에서는 통과되었는데 맞는건지 모르겠군요.

임종규의 이미지

컴파일이 안되더군요... 컴파일러 문제인가..

p.s. 아.. 왜 난 같은 코드 붙혀서 codepad.org 에서 돌려도 에러가 나는건지;;

/* How to Love Others */
while(GetDepth(Love) < Enough) DoLove();

bacon의 이미지

이렇게요.

void (**FuncPtrArray)(int);
FuncPtrArray = new (void(*[10])(int));