初始化类中定义的数组

时间:2014-06-20 06:06:12

标签: c++

我的应用包含结构数据数组。这是在课堂上定义的。如何初始化此数组?

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

在课堂上这是定义的。

API_ERRORS Api_Errors[];

我可以在构造函数中初始化它吗?

3 个答案:

答案 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)

您想在类中初始化变量(结构变量数组)吗?

如果课程是由你写的,有很多方法可以做到这一点。

  1. 自己为类编写一个默认构造函数。
  2. 为接受“数组结构”作为参数的类编写参数化构造函数。

答案 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;
};