我遇到的问题是我正在尝试构建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数组。这可能看起来像一个愚蠢的问题,但我正在努力,希望有人可以解释我出错的地方。我错过了参数吗?
答案 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;
}