发送到标头中定义的类char数组

时间:2012-12-08 20:17:06

标签: c++ class header-files arrays

我遇到的问题是我正在尝试构建DLL。我使用char代替字符串来存储信息。

我在头文件中定义了以下内容:

class Test{
public:
    int qLenght;
    char firstName[];
    char surName[];
};

我在使用以下内容从主程序输入代码时遇到问题:

int main()
{

        Test theTest;
        theTest.firstName[0] = {"Mike Smith","Jonny Vegas","Jimmy Woo"};

}

我已将标题代码包含在主项目的顶部。

它不会让我添加到char数组。这可能看起来像一个愚蠢的问题,但我正在努力,希望有人可以解释我出错的地方。我错过了参数吗?

1 个答案:

答案 0 :(得分:1)

您的类需要知道在实例化类时要分配多少内存(这与分配值的时间不同)。

class Test
{
public:
    char firstName[2][100];
};

int main()
{
    Test theTest;
    strcpy(theTest.firstName[0], "Mike Smith");
    strcpy(theTest.firstName[1], "Jonny Vegas");
    return 0;
}

或者,您可以在分配时动态地为字符串分配内存,但是您需要记住再次释放它:

class Test{
public:
    char *firstName[2];
};

int main()
{
    Test theTest;
    theTest.firstName[0] = strdup("Mike Smith");
    theTest.firstName[1] = strdup("Jonny Vegas");

    // do stuff

    free(theTest.firstName[0]);
    free(theTest.firstName[1]);
    return 0;
}