我得到一个错误,我认为这是由我编写的函数引起的,该函数来自我在类store.cpp中的store中的向量中的文件存储数据。
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 | error:无效类型'&lt;未解析的重载函数类型&gt; [int]'对于数组下标|。
我试图寻找一种方法来解决它,但我并没有真正接近解决它。我看到的一些事情说错误是由于向量与函数混淆引起的,但我不知道如何解决它。
答案 0 :(得分:2)
在头文件中,您将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.
答案 1 :(得分:1)
你的变量是
vector< vector<string> > fullline
fullline
是一个向量,fullline[a]
是一个向量,但fullline[a][b]
是一个字符串。
string
基本上是vector&lt; char&gt;,因此它也有push_back
方法,但你只能push_back
一个字符串字符串。