Для индекса c++ требуется массив или тип указателя

пытаясь поместить классы и объекты в файлы заголовков и продолжать получать эту ошибку, не уверен, потому ли это потому, что я не включил правильные файлы или они просто написаны неправильно. ошибка в строке 28: iItemPrice [iCount]

    #include "stdafx.h"
#include <string>
#include <conio.h>
#include <array>
#include <vector>
#include "ItemsClass.h"
#include "A2main.cpp"
#include <iostream>

using namespace std;
ItemsClass::ItemsClass()
{
}

void ItemsClass::enter_items() {
    string sItmes[5];
    string sChoice;
    int iCount;
    int iItemPrice;
    int iNumOfItems;


    do {

        cout << "--------- ENTER NEW ITEMS ---------\n\nPlease enter the item Name: ";
        cin >> sItems[iCount];
        cout << "\nPlease enter the price of: " << sItems[iCount] << "\n";
        cin >> iItemPrice[iCount];
        cout << "\nWould you like to enter another item? Y/N \n";
        cin >> sChoice;

        if (sChoice == "Y" || sChoice == "y")
        {
            ++iCount;
            ++iNumOfItems;
        }

    } while ((sChoice == "Y" || sChoice == "y") && iNumOfItems < 5);

}

Пожалуйста, не переписывайте код в своих вопросах. Вместо этого скопируйте и вставьте его. Если вы переписываете, вы можете по ошибке добавить нерелевантные ошибки. Что вы сделали.

Some programmer dude 11.04.2018 12:05

Что касается вашей проблемы, что такое являетсяiItemPrice? Как вы думаете, почему вы могли бы индексировать его как массив?

Some programmer dude 11.04.2018 12:05

А что касается «неактуальных» проблем, каково начальное значение iCount? Помните, что неинициализированные локальные (нестатические) переменные будут иметь значение неопределенный, и их использование без инициализации приводит к неопределенное поведение.

Some programmer dude 11.04.2018 12:13
2
3
1 530
2

Ответы 2

iItemPrice - это не массив. Если вы хотите создать массив, используйте int iItemPrice[size], еще лучше используйте std::vector<int> iItemPrice

Зачем вам нужен вектор, если вы знаете его размер во время компиляции? это просто ненужные накладные расходы. std::array - это способ сделать это в C++.

Petar Velev 11.04.2018 12:08

Я пробовал использовать векторы, но не смог заставить их работать со ссылками, такими как iCount и т. д.

limpz 11.04.2018 12:08

iCount не является справочным. Это переменная типа int

Petar Velev 11.04.2018 12:09

Я хочу использовать его для доступа к массиву, я не мог заставить его работать с векторами

limpz 11.04.2018 12:10

@limpz Поскольку у вас есть массив фиксированного размера во время компиляции (или, скорее, вы хотите его), используйте вместо этого std::array, например std::array<int, 5> iItemPrice;. Если вам нужен расширяемый «массив» во время выполнения, тогда std::vector, например std::vector<int> iItemPrice(5); // Create a vector with an initial size of 5 elements

Some programmer dude 12.04.2018 07:41

iItemPrice объявлен как int. Не массив / указатель.

Объявите это как:

int iItemPrice[5];

Другие вопросы по теме