所以,我使用的是dev-C ++。编译器工作正常,一个简单的hello world程序与大约十几个其他简单程序一起工作。这是我正在为课堂工作的一项工作。
对我来说,这个编译但它永远不会运行。它有什么问题?
#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
using namespace std;
void getNames(vector<string> &vectorName, int &last, string temp);
int main() {
vector<string> names;
string tmp;
int last = 0;
getNames(names, last, tmp);
for(int j = 0; j < last; j++) {
cout << names.at(j) << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
void getNames(vector<string> vectorName, int &last, string temp) {
while (true) {
cout << "Enter a name (quit to stop): ";
cin >> temp;
if (temp == "quit") break;
vectorName.push_back(temp);
last = vectorName.size();
}
}
答案 0 :(得分:4)
程序无法链接,因为找不到以下定义:
void getNames(vector<string> &vectorName, int &last, string temp);
那是因为你错过了定义中的&
:
void getNames(vector<string> vectorName, int &last, string temp){
^^^^^^^^^^^
添加&
,它应该编译并运行得很好。
答案 1 :(得分:1)
首先,您的getNames
声明和实施签名不完全相同。
void getNames(vector<string> &vectorName, int &last, string temp){
void getNames(vector<string> vectorName, int &last, string temp){