2011-09-20 5 views
0

가 나는 값으로 클래스 구조를 채우는 데 사용되는 구조를 가지고 :알 수없는 데이터 형식 배열을 구조에 생성 하시겠습니까?

MyType structMy[] = 
{ 
    { START, INTEGER_TYPE, 3, (void *)&classStart->statusStart.set }, 
    { STABLE, CHAR_TYPE, 5, (void *)&classtStable->statusStable.set }, 
    { STOP, DOUBLE_TYPE, 1, (void *)&classStop->statusStop.set  } 
} 

그러나 테스트 및 검증을 위해 내가 구조에 테스트 케이스를 추가 할 : 줄에 정의 된 데이터 유형에 따라 일부 값과 값의 수.

구조 설정 및 1 값 또는 배열로 인해 나는 (void *)가 필요하다고 생각합니다. 그러나 컴파일러는 그것을 좋아하지 않습니다. 데이터 유형이 변경 될 수있는 구조체에 배열을 작성하려면 어떻게해야합니까?

MyType structMy[] = 
{ 
    { START, INTEGER_TYPE, 3, (void*){0, 1, 2}     }, 
    { STABLE, CHAR_TYPE, 5, (void*){'A', 'B', 'C', 'D', 'E'} }, 
    { STOP, DOUBLE_TYPE, 1, (void*){2.4}      } 
} 
+1

인가 이게 무슨 구글 번역합니까? –

답변

1

컴파일러가 포인터를 원하는, 그래서 다른 곳에서 데이터를 선언하려고 :

int is[] = {0, 1, 2}; 
char cs[] = {'A', 'B', 'C', 'D', 'E'}; 
double ds[] = {2.4}; 

MyType structMy[] = 
{ 
    {START, INTEGER_TYPE, 3, (void*)is }, 
    {STABLE, CHAR_TYPE, 5, (void*)cs }, 
    {STOP, DOUBLE_TYPE, 1, (void*)ds } 
} 
0

을 컴파일러를 이야기함으로써 기대하는 유형, 다음과 같이 수행 할 수 있습니다

MyType structMy[] = 
{ 
    { START, INTEGER_TYPE, 3, (void*)(int[]){0, 1, 2}     }, 
    { STABLE, CHAR_TYPE, 5, (void*)(char[]){'A', 'B', 'C', 'D', 'E'} }, 
    { STOP, DOUBLE_TYPE, 1, (void*)(double[]){2.4}     } 
} 
관련 문제