2012-01-12 3 views
1

다음 상황에서 자주 사용되는 클래스가 있습니다 (이름은 TheClass). 여러 인스턴스 상수로부터 생성되고 다른 생성자에 여러 인수로 전달됩니다. 불행하게도 나는 초기화 매우 성가신 구문을 사용해야합니다 :POD처럼 초기화 할 수있는 방법으로 클래스를 구현할 수 있습니까

Otherclass{ TheClass{1, 'a', 2}, 
      TheClass{1, 'b', 4}, 
      TheClass{3, 'h', 2}, 
      TheClass{1, 't', 8} } 

는 POD 것처럼이 가능 클래스를 초기화 할 수 있도록하는 방법이 있나요? 나는. 나는

Otherclass{ {1, 'a', 2}, 
      {1, 'b', 4}, 
      {3, 'h', 2}, 
      {1, 't', 8} } 

편집을 쓸 수 있기를 원하는 : 내가 직면하고있어 문제의 올바른 정의와 또 다른 질문을 게시했습니다. 참조하시기 바랍니다 Is it possible to pass data as initializer_list to std::array of structures?

+3

C++ 11에 추가되지 않았습니까? – pezcode

+0

더 복잡한 경우 (템플릿 등)가 있다고 가정 해 봅시다. 위의 내용이 분명히 작동하기 때문에 최소한의 작동하지 않는 케이스로 질문을 업데이트 할 것입니다. –

+1

당신의 용어는 약간 떨어져 있음을 주목하십시오. 당신이 설명하는 것은 가치 - 초기화가 아니라 집합 - 초기화입니다. – ildjarn

답변

5

이것은 당신이 원하는대로해야합니다. 또는 typedef TheClass t;을 입력하거나 나중에 #define _(x) TheClass x#undef과 같은 매크로를 정의 할 수 있습니다.

#include <initializer_list> 
class TheClass { 
public: 
    TheClass(int x, char y, int z) { } 
}; 

class OtherClass { 
public: 
    OtherClass(std::initializer_list<TheClass> t) { } 
}; 

int main (int argc, char **argv) { 
    OtherClass s { {1,'a',2}, {1, 'b', 4}, {3, 'h', 2}, {1, 't', 8}}; 
    return 0; 
}