我的应用包含结构数据数组。这是在课堂上定义的。如何初始化此数组?
typedef struct _API_ERRORS
{
PLX_STATUS code; //enum
char *text;
} API_ERRORS;
在课堂上这是定义的。
API_ERRORS Api_Errors[];
我可以在构造函数中初始化它吗?
答案 0 :(得分: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"},
};
我刚刚添加了enum typedef以获得一些值来填充定义。
答案 1 :(得分:0)
您想在类中初始化变量(结构变量数组)吗?
如果课程是由你写的,有很多方法可以做到这一点。
答案 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;
};