在这个例子中,编译器说函数“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;
}
答案 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();