C++ 包含类(C+;+;)实例的数组中的值错误

C++ 包含类(C+;+;)实例的数组中的值错误,c++,arrays,instance,C++,Arrays,Instance,我使用数组创建类的实例 我在头文件中声明了它们: Figure *soldier; Fight *weapon; 在cpp中,我使用以下代码创建它: std::cout << "How many soldier? "; std::cin >> i_soldier; std::cout << "How many weapon? "; std::cin >> i_weapon; soldier= new Figure[i_soldier]; wea

我使用数组创建类的实例

我在头文件中声明了它们:

Figure *soldier;
Fight *weapon;
在cpp中,我使用以下代码创建它:

std::cout << "How many soldier? ";
std::cin >> i_soldier;
std::cout << "How many weapon? ";
std::cin >> i_weapon;

soldier= new Figure[i_soldier];
weapon = new Fight[i_weapon];
当我运行代码时,它编译得很好,但是当我查看开始处的位置时,最后一个数组条目的值是错误的;我猜它指向内存地址中的一个值。所有其他条目的值均为0

这就是我说我想去哪一个例子

    for(int i = 0; i <= i_soldier; i++)
    {
        soldier[i].position();
    }

对于(int i=0;i数组是0索引的,数组的最后一个位置是
i\u soldier-1
,请将您的条件更改为严格的
,这是一个查找过多的条件:
对于(int i=0;i您不应该在.h中定义士兵和武器,只需声明它们并在.cppUse向量中定义,这些向量在良好的调试编译器中进行边界检查。非常感谢您的回答,它现在可以工作了。多么愚蠢的错误。。。
    for(int i = 0; i <= i_soldier; i++)
    {
        soldier[i].position();
    }