2013-10-01 2 views
-4

나는 포인터 반환 된 클래스의 함수를 쓴 : 내가배열에서 포인터를 이니셜 라이저로 사용하지 않는 이유는 무엇입니까?

int[10] = {Class.foo()}; 

를 작성하는 시도했지만 문제가 해결되지 않았지만, 왜하지

 DATA_TYPE* foo(){ 
     ... 
     return DATA 
     } 

을 내 주의를

int[10] = {[12,...,123]}; 

작품?

+6

그건 제가 아는 C++이 아닙니다. – andre

+4

포인터를 주면 배열의 크기를 알 수 있습니까? 사실, 배열에 대한 포인터인지 여부를 알 수 있습니까? –

+0

첫 번째 예제에서'{}'을 제거하면 어떻게됩니까? – Antoniossss

답변

2

왜 작동해야합니까? 포인터는 배열이 아닙니다. 의 두 유형은 서로 관련이 없습니다. 배열은 집계이므로 집계 초기화가 필요합니다. 포인터는 스칼라입니다. 골재 초기화 (또는 C++ (11)의 균일 한 초기화 구문 상당)를 사용할 때, 각각의 요소에 대한 초기화 전체 어레이 하지을 제공하는

참고. (char[] 을 문자열 리터럴로 초기화하는 특별한 예외가 있습니다. 따라서 포인터를 사용하여 int을 초기화하려고 시도하면 명시적인 reinterpret_cast이 필요합니다.

관련 문제