이 질문은 게시 here과 관련됩니다. 함수 호출 또는 생성자 호출에서 배열을 초기화 할 수 있습니까? 예를 들어, 클래스 foo의 생성자는 크기가 3 인 배열을 원하므로 foo ({0, 0, 0})를 호출하려고합니다. 나는 이것을 시도했으나 효과가 없다. 다른 객체의 생성자 초기화 목록에서 foo 유형의 객체를 초기화하거나 별도의 배열을 먼저 만들지 않고 foo를 초기화 할 수 있기를 바랍니다. 이것이 가능한가?함수 호출 또는 생성자 호출에서 C++ 배열 초기화
답변
현재 표준에 없습니다. 그것은 C++ 당신이 시간의 생성을 강제로 캐스트를 사용할 수 있지만 표준 C 아닌 GCC에서 11
++ (C99)에서 가능합니다 :
typedef int array[2];
void foo(array) {} // Note: the actual signature is: void foo(int *)
int main() {
foo((array){ 1, 2 } );
}
이것은 C99에서는 작동하지만 C++ 03에서는 작동하지 않습니다 (C++ 0x에서도 복합 리터럴이 아닙니다). –
코드는 (macports) gcc에서 4.6까지 유효합니다. gcc 4.7은'오류 : 임시 배열의 주소를 가져옴 '을보고합니다. –
C++ 11이 현재 표준이므로이 대답을 업데이트해야합니다. –
설계에서 허용하는 경우 클래스 내부의 데이터를 랩핑하고 기본 생성자에서 0 (또는 임의의 값)으로 초기화하는 것을 고려할 수 있습니다.
- 1. 함수 호출에서 생성자 사용?
- 2. C++ 배열 생성자
- 3. C - 함수에서 전역 배열 초기화
- 4. C++ 템플릿 생성자 초기화
- 5. C++에서 모호한 함수/생성자 호출
- 6. C++ 배열 초기화
- 7. C++ 배열 초기화
- 8. 생성자 (Java)에서 즉석에서 배열 초기화
- 9. | 함수 호출에서 연산자 의미? [C++]
- 10. C++ 2d 배열 클래스 함수 호출 도움말
- 11. C++ 생성자 호출
- 12. 목표 - C, 배열 초기화
- 13. C++ 클래스의 배열 초기화
- 14. C++ 배열 초기화
- 15. C++ 배열 초기화
- 16. C++ 배열 초기화
- 17. C 배열 초기화
- 18. C 배열 초기화
- 19. 생성자 호출
- 20. 변수 초기화 및 생성자
- 21. C++ enum이있는 호출 기본 생성자
- 22. 문자열의 정적 배열 초기화 (C++)?
- 23. 부스트 배열 C++의 초기화
- 24. C++ 다차원 배열 초기화 C에서
- 25. C# 배열 초기화 - 기본값이 아닌
- 26. C# 함수 호출?
- 27. C++ 클래스, 생성자 초기화 중 값 할당
- 28. 배열 초기화
- 29. 복사 생성자 초기화 목록
- 30. C++ 배열 초기화 프로그램입니다. 열거 형을 사용하여
먼저 배열 초기화에 대해 이야기하고 나서 클래스 객체를 suialently 초기화해야합니다. 그렇다면 초기화 할 필요가있는 것은 배열 객체 또는 클래스 객체입니다. – AnT
클래스를 초기화하는 것은 내가보기에 사용한 구체적인 경우이며, 내가 질문 한 이유입니다. 그러나, 당신은 또한 크기 3의 배열을 취하고 그것을 foo ({0, 0, 0})로 부르고 싶은 함수 foo를 가질 수 있습니다. 나는 그것을 더 분명하게 만들기 위해 영업 이익을 변경했습니다. – david
예,하지만 여전히 "할당하지 않고 배열을 초기화 할 수 있습니까?"라는 질문을 받고 있습니다. 네, 가능합니다. 예를 들어'int a [10] = {5}'는 요청한대로 배열을 할당하지 않고 초기화합니다. 그러나 그것은 당신이 정말로 관심있는 것처럼 보이지 않습니다. – AnT