据我了解,将整个结构传递给函数而不是通过引用这样做可能会对系统资源造成负担。所以,我想掌握通过引用传递它们的方法。我正在创建一个具有以下结构的字符生成器:
struct Stats{
string name;
int level;
int HP;
int STR;
int CON;
int DEX;
int INT;
int WIS;
int CHA;};
struct Growth{
int HPperlvl;
int STRperlvl;
int CONperlvl;
int DEXperlvl;
int INTperlvl;
int WISperlvl;
int CHAperlvl;};
struct Holdstats{
Stats classstats;
Growth classgrowth;};
const int SIZE = 10;
Holdstats classlist[SIZE] = {
{ {"Fighter", 1, 18, 10, 10, 10, 10, 10, 10}, {1,1,1,1,1,1,1} },
{ {"Wizard", 1, 10, 10, 10, 10, 10, 10}, {1,1,1,1,1,1,1}},
{ {"Rogue", 1, 10, 10, 10, 10, 10, 10}, {1,1,1,1,1,1,1}}
} //These are just some examples, will be filled later
Holdstats charlist[SIZE]; //Empty array to store created characters
我将使用程序中最简单的函数来说明我的问题。下面的函数只是为了显示传递给它的任何结构的信息,在传递给它的结构中的任何位置。该位置已在程序中预先定义。我想通过引用传递结构和位置。
void dispinfo(const Holdstats &p, int &i) //Should be passed a position and a structure
{
cout << endl << "\tHere is the Character/Class info you requested: "
<< "\n\t----------------------------------------------"
<< "\nName:\t\t" << p[i].classstats.name << endl
<< "Level:\t\t" << p[i].classstats.level << endl
<< "Hit Points:\t\t" << p[i].classstats.HP << endl
<< "Strength:\t\t" << p[i].classstats.STR << endl
<< "Constitution\t\t" << p[i].classstats.CON << endl
<< "Dexterity\t\t" << p[i].classstats.DEX << endl
<< "Intelligence\t\t" << p[i].classstats.INT << endl
<< "Wisdom\t\t" << p[i].classstats.WIS << endl
<< "Charisma\t\t" << p[i].classstats.CHA << endl;
}
我遇到的问题与p[i]
. 我的编译器告诉我,对于 Holdstats &p - 没有运算符[]
匹配这些操作数。我只会在函数头中使用先前定义的结构数组(“classlist”或其他东西)的名称,但我希望能够将任何结构数组传递给函数。
据我所知,我正在调用先前定义的数组的元素 i。但很明显,我做错了什么。任何人都可以看到问题吗?