C++ 此程序将编译但不运行。其他程序运行

C++ 此程序将编译但不运行。其他程序运行,c++,C++,所以,我使用的是dev-C++。编译器工作正常,一个简单的hello world程序可以与十几个其他简单程序一起工作。这是一个正在进行中的工作,我正在为班级做一些事情 对我来说,它可以编译,但从不运行。怎么了 #include <iostream> #include <vector> #include <cstdlib> #include <algorithm> using namespace std; void getNames(vector&

所以,我使用的是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();
    }
}
#包括
#包括
#包括
#包括
使用名称空间std;
void getNames(vector和vectorName、int和last、string temp);
int main(){
载体名称;
串tmp;
int last=0;
getNames(姓名、姓氏、tmp);
对于(int j=0;jcout首先,您的
getNames
声明和实现签名不完全相同

void getNames(vector<string> &vectorName, int &last, string temp){
void getNames(vector<string> vectorName, int &last, string temp){
void getNames(vector和vectorName、int和last、string temp){
void getNames(向量vectorName、int和last、字符串temp){

首先,您的
getNames
声明和实现签名不完全相同

void getNames(vector<string> &vectorName, int &last, string temp){
void getNames(vector<string> vectorName, int &last, string temp){
void getNames(vector和vectorName、int和last、string temp){
void getNames(向量vectorName、int和last、字符串temp){

程序链接失败,因为它找不到以下内容的定义:

void getNames(vector<string> &vectorName, int &last, string temp);

添加
&
,它应该可以正常编译和运行。

程序应该无法链接,因为它找不到以下内容的定义:

void getNames(vector<string> &vectorName, int &last, string temp);

添加
&
,它应该可以正常编译和运行。

定义“从不运行”。如果您手动运行它会怎么样?您是否看到任何错误?如果是,它们是什么?我首先看到的是
getNames
定义的参数与您声明的参数不同(缺少
&
)在
main
函数中的
getNames
上放置一个断点,查看它是否到达。如果到达,请按F10直到它停止工作,并让我们知道它停止工作的位置定义“从不运行”。如果您手动运行它会怎么样?您是否看到任何错误?如果是,它们是什么?我首先看到的是
getNames
定义的参数与您声明的参数不同(缺少
&
)在代码< >主< /代码>函数中放置断点,并查看它是否到达。如果它运行,请按F10直到它停止工作,让我们知道它在哪里停止工作。不要介意这是我的错误,认为他使用C字符串而不是C++字符串。别介意这是我的错误,以为他使用C字符串AN。“不使用C++字符串。”BrayHim:为什么你使用前向声明?只是把函数混在一起。@去复印机是的,它是为类而我的教授对函数原型很奇怪。@布雷海姆:嗯,这可能是很好的工作培训,如果你有一个坏厨师坚持坏的编码标准。@ BrayHim:你为什么使用一个前向声明?不管怎么说,你还是要重新整理一下函数。@Deduplicator是的,这是为课堂准备的,我的教授对函数原型很奇怪。@Brayheim:如果你有一个坚持糟糕编码标准的糟糕厨师,这可能是很好的工作培训。