0

我遇到的问题是我正在尝试构建一个 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 数组中。这似乎是一个愚蠢的问题,但我正在努力,希望有人能阐明我哪里出错了。我错过了一个参数吗?

4

1 回答 1

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;
}
于 2012-12-08T21:06:29.907 回答