C++:数组作为函数形式参数让我出错
C++: Array as Function Formal Parameter Gets me Errors
我在大学学习计算机科学 class。我正在做一项不会很快到期的作业,但我 运行 遇到了一个问题,我厌倦了等待老师回复我的电子邮件。我们用 Visual Studio 2015 年学习了 C++ 编码,并学习了用户定义的函数、数组和结构。我们没有对 classes 或任何东西做任何事情,我发现的关于我遇到的错误的所有信息似乎都涉及这些,因此对我没有帮助。
每当我 运行 我的程序时,我都会收到以下错误:
"LNK2019 unresolved external symbol "void __cdecl takeOrder(int,int,struct menuItemType * const)" (?takeOrder@@YAXHHQAUmenuItemType@@@Z) 在函数 _main
中引用
LNK1120 1 个未解决的外部问题
据说这两个错误都在 "line 1"。
Visual Studio网站上的文档词汇量有点大,我没有完全理解那里的所有信息,但我认为这与我的变量声明有关。这是唯一有意义的事情。
我对数组不是很了解,但我认为我使用它们是正确的。我已经对教科书、笔记和拼写进行了两次、三次、四次检查,但我不知道自己遗漏了什么。下面是完整的代码(保存一些 // 只会让它更长的东西)。
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cstring>
using namespace std;
struct menuItemType
{
string itemName;
double itemPrice;
};
void read(menuItemType menuList[], int&);
void showMenu(menuItemType menuList[], int&);
void takeOrder(int, int, menuItemType menulist[]);
int main()
{
int counter = 0;
menuItemType menuList[10];
int order[10] = { 0,0,0,0,0,0,0,0,0,0 };
double totalBill = 0;
double tax = 0;
cout << fixed << setprecision(2) << showpoint;
cout << "Welcome to Hold-ye-Overs, a delightful place to eat with food\nmade from one hundred percent actual food!\n";
read(menuList, counter);
showMenu(menuList, counter);
takeOrder(order[10], counter, menuList);
return 0;
}
void takeOrder(int order[], int counter, menuItemType menuList[])
{
int amount_of_item;
int choice;
bool flag = true;
char orderMore;
while (flag == true)
{
cout << "Please enter the number for the item you would like to have." << endl;
cin >> choice;
cout << "Please enter the number of " << menuList[choice - 1].itemName << "s you would like to order." << endl;
cin >> amount_of_item;
order[choice - 1] = order[choice - 1] + amount_of_item;
cout << "Would you like to order more items? y/n" << endl;
cin >> orderMore;
if (orderMore == 'y' || orderMore == 'Y')
flag = true;
else
flag = false;
}
}
void read(menuItemType menuList[], int& counter)
{
ifstream in;
in.open("menu.txt");
char temp = char();
int i = 0;
while (!in.eof())
{
getline(in, menuList[i].itemName);
in >> menuList[i].itemPrice;
//cout << menuList[i].itemName << " " << menuList[i].itemPrice << endl;
in.get(temp);//to pick up endl after the price
++i;
counter++;
}
in.close();
}
void showMenu(menuItemType menuList[], int& counter)
{
cout << fixed << setprecision(2) << showpoint;
int i = 0;
for (i = 0; i < counter; i++)
{ cout << left << setw(2) << i + 1 << " :" << left << setw(20) << menuList[i].itemName;
cout << right << setw(1) << "$" << left << setw(7) << menuList[i].itemPrice << endl;
}
}
如果您想将数组传递给函数 takeOrder,我可以看到您需要更正两个地方。
- 函数的定义采用数组,因此声明需要更改为
void takeOrder(int[], int, menuItemType menulist[]);
- 将 main 函数中的用法更改为
takeOrder(order, counter, menuList);
,因为您的函数正在接受数组而不是 int(order[10] 传递整数)
如果要将函数的整数更改定义传递给 takeOrder(int order, int counter, menuItemType menuList[])
我在大学学习计算机科学 class。我正在做一项不会很快到期的作业,但我 运行 遇到了一个问题,我厌倦了等待老师回复我的电子邮件。我们用 Visual Studio 2015 年学习了 C++ 编码,并学习了用户定义的函数、数组和结构。我们没有对 classes 或任何东西做任何事情,我发现的关于我遇到的错误的所有信息似乎都涉及这些,因此对我没有帮助。
每当我 运行 我的程序时,我都会收到以下错误:
"LNK2019 unresolved external symbol "void __cdecl takeOrder(int,int,struct menuItemType * const)" (?takeOrder@@YAXHHQAUmenuItemType@@@Z) 在函数 _main
中引用LNK1120 1 个未解决的外部问题
据说这两个错误都在 "line 1"。
Visual Studio网站上的文档词汇量有点大,我没有完全理解那里的所有信息,但我认为这与我的变量声明有关。这是唯一有意义的事情。
我对数组不是很了解,但我认为我使用它们是正确的。我已经对教科书、笔记和拼写进行了两次、三次、四次检查,但我不知道自己遗漏了什么。下面是完整的代码(保存一些 // 只会让它更长的东西)。
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <cstring>
using namespace std;
struct menuItemType
{
string itemName;
double itemPrice;
};
void read(menuItemType menuList[], int&);
void showMenu(menuItemType menuList[], int&);
void takeOrder(int, int, menuItemType menulist[]);
int main()
{
int counter = 0;
menuItemType menuList[10];
int order[10] = { 0,0,0,0,0,0,0,0,0,0 };
double totalBill = 0;
double tax = 0;
cout << fixed << setprecision(2) << showpoint;
cout << "Welcome to Hold-ye-Overs, a delightful place to eat with food\nmade from one hundred percent actual food!\n";
read(menuList, counter);
showMenu(menuList, counter);
takeOrder(order[10], counter, menuList);
return 0;
}
void takeOrder(int order[], int counter, menuItemType menuList[])
{
int amount_of_item;
int choice;
bool flag = true;
char orderMore;
while (flag == true)
{
cout << "Please enter the number for the item you would like to have." << endl;
cin >> choice;
cout << "Please enter the number of " << menuList[choice - 1].itemName << "s you would like to order." << endl;
cin >> amount_of_item;
order[choice - 1] = order[choice - 1] + amount_of_item;
cout << "Would you like to order more items? y/n" << endl;
cin >> orderMore;
if (orderMore == 'y' || orderMore == 'Y')
flag = true;
else
flag = false;
}
}
void read(menuItemType menuList[], int& counter)
{
ifstream in;
in.open("menu.txt");
char temp = char();
int i = 0;
while (!in.eof())
{
getline(in, menuList[i].itemName);
in >> menuList[i].itemPrice;
//cout << menuList[i].itemName << " " << menuList[i].itemPrice << endl;
in.get(temp);//to pick up endl after the price
++i;
counter++;
}
in.close();
}
void showMenu(menuItemType menuList[], int& counter)
{
cout << fixed << setprecision(2) << showpoint;
int i = 0;
for (i = 0; i < counter; i++)
{ cout << left << setw(2) << i + 1 << " :" << left << setw(20) << menuList[i].itemName;
cout << right << setw(1) << "$" << left << setw(7) << menuList[i].itemPrice << endl;
}
}
如果您想将数组传递给函数 takeOrder,我可以看到您需要更正两个地方。
- 函数的定义采用数组,因此声明需要更改为
void takeOrder(int[], int, menuItemType menulist[]);
- 将 main 函数中的用法更改为
takeOrder(order, counter, menuList);
,因为您的函数正在接受数组而不是 int(order[10] 传递整数)
如果要将函数的整数更改定义传递给 takeOrder(int order, int counter, menuItemType menuList[])