type '' 不提供下标运算符

问题描述 投票:0回答:1

我遇到的问题是打印出

spelare1[i]
和函数
kopaEnheter
。我来回走了一段时间,所以问题可能出在其他地方。已四处寻找解决方案,但我的问题在错误之间反复出现。我是编码新手,正在参加为期 5 周的课程。一直在寻找答案,但我可能没有正确地看待它。我所做的就是将问题转移到函数中的其他内容或
spelare1[i]

我已经关注这个问题太久了,所以在尝试解决这个问题时我可能会做一些疯狂的事情。

#include <iostream>
#include <string>

using namespace std;

struct Spelare {
    int guld;
    int soldater;
    int inkomst;
    int mur;
    int hp;
    int soldater_attackera;
    int pris_soldater; // Pris för soldater 5
    int pris_mur;      // Pris för att laga mur 10
    int pris_farm;     // Pris för att bygga gårdar 10
    int nyRunda;
};
struct npc {
    int guldData;
    int soldaterData;
    int inkomstData;
    int murData;
    int hpData;
};
Spelare spelare1 = { 10, 0, 5, 10, 1, 0, 5, 10, 10, 0 };
class spelare1 {
public:
    spelare1();
};
npc data[5];
//------------------------------------------------------------------

void kopaEnheter(struct Spelare &spelinfo, int antal) {

    int totalPris = 5 * antal;
    if (totalPris == spelare1.guld || totalPris <= spelare1.guld) {
        spelare1.guld -= totalPris;
        spelare1.soldater += antal;
        cout << "Du köpte " << antal << " soldater!\n";
    } else {
        cout << "Du har inte tillräckligt med guld för att köpa " << antal << " soldater.\n";
    }
}
//------------------------------------------------------------------

bool spel = true, program = true;
int main() {
    while (program == true) {

        int val;
        cin >> val;
        cout << "\n";

        switch (val) {

            program = false;
            break;
        default:
            cout << "Ogiltigt val\n";
    
        case 1:
            while (spel == true) {
                string rss[4] { "    | Guld: ", "| Soldater: ", "| Inkomst: ",
                        "| Mur: " };
                cout << "    ---------------------------------------------\n";
                for (int i = 0; i < 4; i++) {
                    cout << rss[i] << spelare1[i];
                    cout << "|\n    ---------------------------------------------\n";
                    cout << "1. Köp soldater\n";
                    cout << "2. Laga mur\n";
                    cout << "3. Bygg farm\n";
                    cout << "4. Nästa runda\n";
                    cout << "5. Attackera\n";
                    cout << "6. Avsluta\n";
    
                    int antal;
                    int spelval;
                    cin >> spelval;
    
                    switch (spelval) {
                        case 1: {
        
                            cout << "Ange antal soldater du vill köpa: ";
                            cin >> antal;
                            if (antal == 0)
                                break;
                            else {
                                kopaEnheter(spelare1, antal);
                            }
                        }
                        break;
                    }
                }
            }
        }
    }

我尝试过改变它,但我所做的只是在重复错误中原地踏步。它要么让我运行程序,但数字无法正确显示,或者打印 rss 错误,或者从未链接到用户的另一个数组中获取数字。
同一地点的一些错误

Expected Unqualified Id Error
No matching function for call
type 'Spelare' does not provide a subscript operator
c++ arrays function struct
1个回答
0
投票

在这里进行大胆猜测,但似乎您想将

spelare1
视为数组。但事实并非如此,编译器抱怨道。我想你想要的是这个

更换

cout << rss[i] << spelare1[i];

cout << rss[i];
switch (i)
{
case 0:
    cout << spelare1.guld;
    break;
case 1:
    cout << spelare1.soldater;
    break;
case 2:
    cout << spelare1.inkomst;
    break;
case 3:
    cout << spelare1.mur;
    break;
}

但可能更好的是像这段代码一样完全删除循环

© www.soinside.com 2019 - 2024. All rights reserved.