将字符串向量传递给函数和函数原型问题c ++

时间:2018-01-01 01:48:43

标签: c++ function vector

在这个例子中,编译器说函数“list”没有定义,尽管我在下面写了一个。如果我将函数定义移动到顶部,那么没有原型,它编译得很好。

有人可以解释这里发生了什么吗?

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <vector>

    using namespace std;

    void stuff();
    void list(vector<string> things);

    bool alive = true;

    int main()

    {
       vector<string> things;
       things.push_back("Lots");
       things.push_back("Of");
       things.push_back("Things");

       do
       {
         cout << "What do you want to do?\n\n" << endl;
         string input;
         cin >> input;

         if (input == "stuff")
         {
            stuff();
         }
         if (input == "list")
         {
            list();
         }
       } while (alive);

       return 0;
     }

   void list()
     {
       cout << "The things are:\n\n";
       for (int i = 0; i < things.size(); ++i)
       {
         cout << things[i] << endl;
       }
     }

    void stuff()
     {
       cout << "Some stuff" << endl;
     }

2 个答案:

答案 0 :(得分:0)

Session = scoped_session(sessionmaker(class_=RoutingSession, autocommit=True)) void list(vector<string> things);不同。您需要将函数实际定义为void void list(),而不仅仅是原型。

答案 1 :(得分:0)

您的list(vector<string> things) function definition签名与function declaration不同。功能签名应该相同。您的函数定义签名也应该接受一个参数:

list

在您的程序中,您可以使用以下命令调用该函数:

void list(std::vector<string> things)
{
    std::cout << "The things are:\n\n";
    for (int i = 0; i < things.size(); ++i)
    {
        std::cout << things[i] << '\n';
    }
}

应该是:

list();