我尝试动态创建对象。每个对象都是指针数组中的一个指针。编译器给我
error C4700: uninitialized local variable 'villages' used.
我不知道如何解决它。我将非常感谢所有帮手。
int villageAmount;
cout << "Defining villages:\n\nEnter how many villages do you want: ";
cin >> villageAmount;
Village **villages;
for (int i = 0; i < villageAmount; i++)
{
cout << "\nDefining village's details #" << i + 1 << ":\n";
villages[i] = new (nothrow) Village;
}
答案 0 :(得分:2)
Village **villages;
您未初始化就声明了villages
,因此其中包含垃圾垃圾。
for (int i = 0; i < villageAmount; i++)
{
cout << "\nDefining village's details #" << i + 1 << ":\n";
villages[i] = new (nothrow) Village;
}
在下面的上,您可以访问它并进行书写。那不是不。
如果要动态存储村庄的指针(即Village*
的类型),则还需要分配它们。
Village **villages = new Village*[villageAmount];
如果金额是固定的,
Village *villages[10] = { nullptr, }; // 10, 12344, or whatever
答案 1 :(得分:1)
从不分配村庄内存,您应该使用向量或任何种类的容器(这里的数组看起来不错)。 如果您确实想手动允许内存,则可以执行以下操作:
Village **villages = new Village*[villageAmount];
别忘了释放每一个新村庄,(如果您仅释放村庄,那么他包含的所有村庄*将被保留。
编辑:其他人回答了,所以我想我的回答很无聊