[완료]C++에서 new[]로 객체 배열 생성시, 생성자 호출 방법
글쓴이: klara / 작성시간: 금, 2007/03/30 - 12:53오전
맨날 눈팅만 하다가 처음으로 글 올려보는데, 그게 질문글이라 아쉽습니다-_-;
각설하고...
new 연산자를 이용하는 경우는 new Class(...) 이런식으로 생성자를 호출할수 있는데요, new[]를 이용하여 객체배열을 만들때는 어떻게 생성자를 호출해야 하나요...?
대충 때려잡는 다고 new Class(..)[4], new (Class(..))[4], new Class[4](...) 등을 시도해봤는데 다 틀린듯하네요...
웹에서 new 배열 생성자 이렇게 검색하면 나오는건 자바스크립트의 Array생성하는 법뿐 orz
아시는분, 알려주시면 감사하겠습니다.
Forums:
array new (operator new[])의 경우
초기화를 가능하게 할 syntax가 없었다는 글을 본 것으로 기억합니다. (google에서 "initialization in array new"로 검색하시면 보실 수 있을 듯)
따라서 array대신 vector의 범위 지정 생성자를 사용하시는 게 바람직 할 것으로 보입니다. (굳이 array를 사용해야 한다면, 해당 class에 기본 생성자를 제공해서 사용해야 할 것 같네요)
아래는 vector의 범위 지정 생성자를 사용해서 초기값을 20으로 한 Test를 5개 만들어서 vector를 만드는 예입니다.
감사합니다.
마땅히 뾰족한 방법은 없는 것이로군요.
가변배열도 아니니, 말씀하신대로 그냥 처음에 벡터에 크기 지정해주고 초기화해서 사용해야겠습니다.
답변 감사합니다.
어느 클래스를
어느 클래스를 배열로 만드셨는지 모르겠으나...
는 정상적으로 사용하고 있습니다.
직접 만드신 클래스라면 아마 배열을 하기 위한 조건같은게 필요할지도 모르겠습니다.
(기본 생성자가 있어야 한다거나... 하는...)
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
그렇게 하면 기본
그렇게 하면 기본 생성자가 자동으로 호출되는건데, 전 따로 생성자로 인자를 전해주고 싶거든요.
string이야 생성후에 얼마든지 값을 바꿀수 있지만, 꼭 생성할때 값을 줘야 하는 클래스가 있잖아요?
이런 클래스의 객체에 동적할당할때는, 생성자를 호출해줘야하는데, 배열로 생성하는 경우는 어떻게 하나...하는 문제였습니다.
신경써주셔서 감사합니다.
템플릿을 쓰면
템플릿을 쓰면 쉽게 해결됩니다.
템플릿 인자에 object constructor가 호출될때 사용할 값을 넣으면 됩니다.
단 클래스가 약간 보기 싫은건 감수해야죠.
TempateClass 이런식으로
TempateClass<Class, value> 이런식으로 하고, 이 TemplateClass의 멤버 초기화 리스트에서 Class의 생성자로 value를 넘겨주라는 뜻인가요...?
이번엔 딱한번 등장하는 거라서 따로 템플릿을 만들긴 좀뭐하지만...다음번에 자주 쓰게 될일이 있으면 활용해야겠네요.
감사합니다.
댓글 달기