2014-06-20 3 views
1

내 앱에는 구조체 데이터의 배열이 포함됩니다. 이것은 클래스에서 정의됩니다. 이 배열을 어떻게 초기화합니까?클래스로 정의 된 배열 초기화하기

typedef struct _API_ERRORS 
{ 
    PLX_STATUS code; //enum 
    char  *text; 
} API_ERRORS; 

이 클래스가 정의됩니다.

API_ERRORS Api_Errors[]; 

생성자에서 초기화 할 수 있습니까?

+0

배열의 크기가 클래스의 구성원이어야합니다. 그러나 어쨌든'std :: array'를 선호해야합니다. – chris

답변

0

당신은 다음과 같이 선언 할 수 있습니다

typedef enum 
{ 
    CODE1, 
    CODE2, 
    CODE3 
} PLX_STATUS; 

typedef struct _API_ERRORS 
{ 
    PLX_STATUS code; //enum 
    char  *text; 
} API_ERRORS; 

API_ERRORS ApiErrors[] = 
{ 
    { CODE1, "Error 1"}, 
    { CODE2, "Error 2"}, 
    { CODE3, "Error 3"}, 
}; 

난 그냥 정의에 채우기 위해 일부 값을 가지고 열거 타입 정의를 추가했습니다.

0

클래스 내부에서 변수 (구조체 변수의 배열)를 초기화 하시겠습니까?

클래스가 작성한 경우이를 수행 할 수있는 방법이 많이 있습니다.

  1. 클래스의 기본 생성자를 직접 작성하십시오.
  2. "구조체 배열"을 인수로 사용하는 클래스의 매개 변수화 된 생성자를 작성합니다.
0

std::vector은 다음 두 가지 버전의 샘플 코드에서 사용됩니다.

// with struct constructor 
class Test { 
    typedef enum {PLX_1, PLX_2} PLX_STATUS; 
    typedef struct _API_ERRORS 
    { 
     PLX_STATUS code; //enum 
     char  *text; 
     _API_ERRORS(PLX_STATUS code, char* text):code(code),text(text){}; 
    } _API_ERRORS; 
public: 
    Test() { 
     array.push_back(_API_ERRORS(PLX_1, "plx1")); 
     array.push_back(_API_ERRORS(PLX_2, "plx2")); 
    } 
private: 
    vector<_API_ERRORS> array; 
}; 

// without struct constructor 
class Test { 
    typedef enum {PLX_1, PLX_2} PLX_STATUS; 
    typedef struct _API_ERRORS 
    { 
     PLX_STATUS code; //enum 
     char  *text; 
    } _API_ERRORS; 
public: 
    Test() { 
     array.push_back({PLX_1, "plx1"}); 
     array.push_back({PLX_2, "plx2"}); 
    } 
private: 
    vector<_API_ERRORS> array; 
}; 
관련 문제