如何在主函数之外访问数组?

How to access array in function outside of main?

本文关键字:访问 数组 函数      更新时间:2023-10-16

我正在尝试创建一个打印商店库存的程序。我在 getInventory 函数中打印出对象中的变量。但是,当我尝试在getStore函数中打印出整个库存时,它不返回任何内容。我觉得我的指针正确指向我的数组是一个问题,但我不确定。

#include <iostream>
#include <string>
class Weapon
{
private:
    std::string nameWeapon, messageUsed;
    bool ownedWeapon;
    double weaponCost;
    int numberUses;
public:
    //Default constructor
    Weapon() 
    {
        nameWeapon = "weapon name";
        messageUsed = "weapon sound";
        weaponCost = 0;
        ownedWeapon = false;
        numberUses = 1;
    }
    //Non-Default Constructor
    Weapon(std::string nW, std::string mU,double wC,bool oW, int nU )
    {
        nameWeapon = nW;
        messageUsed = mU;
        weaponCost = wC;
        ownedWeapon = oW;
        numberUses = nU;
    }
    void getInventory()
    {
        std::cout << nameWeapon << "t" << messageUsed << "t" << weaponCost << "t" << ownedWeapon << "t" << numberUses << "n";
    }
    void getStore(Weapon* weaponArray)
    {
        std::cout << "Name" << "t" << "Sound" << "t" << "Price" << "t" << "Owned";
        for (int i = 0; i < 9; i++)
        {
              weaponArray[i].getInventory();
        }
    }
};
int main()
{
    Weapon weaponArray[9]{};
    weaponArray[0] = Weapon("Broad Sword","Clang!",50,false,3);
    weaponArray[1] = Weapon("Champions Sword","Swoosh!",99.99,false,5);
    weaponArray[2] = Weapon("Dagger","Ding!",12.25,false,1);
    weaponArray[3] = Weapon("Poisin Dagger","Shh",18.50,false,1);
    weaponArray[4] = Weapon("Sturdy Dagger","Gronk!",14.75,false,3);
    weaponArray[5] = Weapon("Short Bow","T'wang!",35.75,false,3);
    weaponArray[6] = Weapon("Champions Bow","Swoop!",90.15,false,5);
    weaponArray[7] = Weapon("Champions Axe","Bash!",110.11,false,6);
    weaponArray[8] = Weapon("Throwing Axe","Bonk!",25.75,false,2);
    void getStore();
    system("pause");
    return 0;
}
void getStore();

这是一个函数存根。它声明了一个函数getStore,该函数不带任何参数,也不返回任何稍后要实现的内容。这几乎肯定是一个错字。

此外,由于void getStore(Weapon* weaponArray)属于武器类,因此您必须在看起来不正确的武器上调用它。您可能打算这样做:

class Weapon {
    // ...
};
void getStore(Weapon* weaponArray, unsigned sz)
{
    std::cout << "Name" << "t" << "Sound" << "t" << "Price" << "t" << "Owned";
    for (unsigned i = 0; i < sz; i++)
    {
          weaponArray[i].getInventory();
    }
}
int main()
{
    Weapon weaponArray[9]{};
    weaponArray[0] = Weapon("Broad Sword","Clang!",50,false,3);
    //...
    getStore(weaponArray, 9);
}