我正在尝试将单独的文件链接/引用在一起进行编译。我以前从未这样做过,所以我迷失了这个错误。好像我已经引用了我需要的东西。
我有三个文件,main.cpp、parser.cpp 和 header.h Main 调用 parser 来解析文本(尽管我还无法测试它是否真的有效:l)
main.cpp -
#include "header.h"
using namespace std; // I know this isn't recommended, I'm changing this later.
int main(){
string input, arg1, arg2;
vector<string> parsedIn;
cout << "<";
while(getline(cin, input)){
parsedIn = parser(input);
//more code, this is the only call to parser and compile error
//stops here
解析器.cpp -
#include "header.h"
std::vector<std::string> parser(std::string &input){
int i=0;
//int begin=1;
int count=0;
std::vector<std::string> parsedIn;
while(i<input.length()){
char temp = input.at(i);
if(temp != ' '){
parsedIn[count] += temp;
count++;
}
i++;
}
if(count < 3)
parsedIn[0] = "Error"; // Set first value to "Error" to report an input issue
return parsedIn;
}
头文件.h
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
std::vector<std::string> parser(std::string &input);
我知道我也应该使用警卫,但我的 TA 并不清楚我是如何设置这些的……不过是婴儿步骤。这是我第一次使用 C++,所以我想弄清楚为什么没有引用它。
当然,错误是对解析器的未定义引用。
编辑:我对代码进行了更改以反映我根据您的建议所做的事情。
具体来说 parse(std::string &input) 已经变成了 parser(std::string &input)