내 앱에는 구조체 데이터의 배열이 포함됩니다. 이것은 클래스에서 정의됩니다. 이 배열을 어떻게 초기화합니까?클래스로 정의 된 배열 초기화하기
typedef struct _API_ERRORS
{
PLX_STATUS code; //enum
char *text;
} API_ERRORS;
이 클래스가 정의됩니다.
API_ERRORS Api_Errors[];
생성자에서 초기화 할 수 있습니까?
내 앱에는 구조체 데이터의 배열이 포함됩니다. 이것은 클래스에서 정의됩니다. 이 배열을 어떻게 초기화합니까?클래스로 정의 된 배열 초기화하기
typedef struct _API_ERRORS
{
PLX_STATUS code; //enum
char *text;
} API_ERRORS;
이 클래스가 정의됩니다.
API_ERRORS Api_Errors[];
생성자에서 초기화 할 수 있습니까?
당신은 다음과 같이 선언 할 수 있습니다
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"},
};
난 그냥 정의에 채우기 위해 일부 값을 가지고 열거 타입 정의를 추가했습니다.
클래스 내부에서 변수 (구조체 변수의 배열)를 초기화 하시겠습니까?
클래스가 작성한 경우이를 수행 할 수있는 방법이 많이 있습니다.
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;
};
배열의 크기가 클래스의 구성원이어야합니다. 그러나 어쨌든'std :: array'를 선호해야합니다. – chris