私が理解していることから、構造全体を関数に渡すことと、参照によってそうしないことは、システムリソースに負担をかける可能性があります。それで、私はそれらを参照によって渡すことについてのハンドルを得たいと思います。次の構造でキャラクタージェネレーターを作成しています。
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を呼び出しています。しかし、明らかに、私は何か間違ったことをしています。誰かが問題を見ることができますか?