动态对象创建的指针数组

时间:2019-03-15 00:12:03

标签: c++

我尝试动态创建对象。每个对象都是指针数组中的一个指针。编译器给我

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

2 个答案:

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

别忘了释放每一个新村庄,(如果您仅释放村庄,那么他包含的所有村庄*将被保留。

编辑:其他人回答了,所以我想我的回答很无聊