Я получаю сообщение об ошибке, которое, как мне кажется, вызвано функцией, которую я написал для хранения данных из файла в векторе в моем классе под названием store в store.cpp.
main.cpp
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
#include "store.h"
using namespace std;
int main ()
{
store data;
ifstream inFile ("C:/Users/Owner/Desktop/Albums.csv");
string line;
string item;
int num;
int itemnum;
int linenum = 0;
while (getline (inFile, line))
{
linenum++;
cout << endl << "Line #" << linenum << ":" << endl;
istringstream linestream(line);
itemnum = 0;
num = 0;
while (getline (linestream, item, ','))
{
itemnum++;
if (itemnum == 2 || itemnum == 3 || itemnum == 4 || itemnum == 6)
{
num++;
data.addtovect(linenum, num, item);
}
cout << "Item #" << itemnum << ": " << item << endl;
}
}
return 0;
}
Store.h
#ifndef STORE_H
#define STORE_H
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
class store
{
public:
store();
void addtovect(int, int, string);
void print();
private:
vector< vector<string> > fullline();
};
#endif
Store.cpp
#include "store.h"
store::store()
{
}
void store::addtovect(int a, int b, string c)
{
fullline[a][b].push_back(c);
}
void store::print()
{
}
Ошибка:
C:\Users\Owner\Desktop\C++ projects\csc125\lab4\store.cpp | 9 | ошибка: недопустимые типы <неразрешенный перегруженный тип функции> [int] 'для индекса массива |.
Я попытался найти способ исправить это, но я действительно не приблизился к выяснению этого. Некоторые из вещей, которые я видел, говорили, что ошибка вызвана тем, что вектор запутался с функцией, но я понятия не имею, как я могу это исправить.
В вашем файле заголовка вы определяете fullline как функцию, которая возвращает вектор, содержащий векторы, содержащие строки:
vector< vector<string> > fullline();
Удалите круглые скобки и вместо этого будет вектором, содержащим векторы, содержащие строки.
vector< vector<string> > fullline;
Редактировать:
Когда вы пытаетесь добавить строку в свои fullline
векторы, у вас появятся некоторые проблемы:
1) Внутренний вектор не создан, вам в какой-то момент нужно будет push_back
вектор в первый вектор.
2) Вы пытаетесь вставить строку в строку:
fullline[a][b].push_back(c);
fullline < This is your first vector.
fullline[a] < Here you get the secondary vector.
fullline[a][b] < Here you get the object within the second vector (a string).
fullline[a][b].push_back(c) < Here you try to push back c into the string.
Ваша переменная
vector< vector<string> > fullline
fullline
- вектор, fullline[a]
- вектор, а fullline[a][b]
- строка.
string
- это в основном вектор <char>, поэтому он также имеет метод push_back
, но вы можете только push_back
использовать символ для строки.
|
не логично ИЛИ; его побитовое . попробуй||