所以我的项目经理给了我一些c ++代码来完成。代码中缺少某些部分,我需要填写。正如您在下面看到的,这是我在完成代码后留下的内容:
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
struct Cars {
char Name[20];
unsigned int Wheel;
double Speed;
};
#define database_size 10
#define database_filename "cars.txt"
void enter(Cars&, unsigned long);
int main()
{
Cars Car[database_size];
unsigned long database_length = 0;
char UserInput;
while (1) {
cout << endl;
cout << "Cars database" << endl;
cout << "1. Enter a new car model" << endl;
cout << "6. Exit the program" << endl << endl;
cout << "Please pick a number: ";
cin >> UserInput;
cout << endl;
switch(UserInput) {
case '1':
enter(Car[database_length], database_length);
break;
case '6':
return 0;
default:
cout << "Invalid entry" << endl << endl;
break;
}
}
}
void enter(Cars& unsigned long)
{
if (Cars == DATABASE_MAX)
{
cout << "Unfortunately the database is full ";
}
else
{
cout << "database not full";
}
}
现在我遇到的问题是,每当我编译它时,我都会得到未解决的外部错误和未解决的符号错误。我在网上看了一下,大多数答案都与一个叫做“#34;链接时间”的东西有关。错误?但我不确定这是否也适用于此。
任何想法都会被贬低。
编辑:目前收到以下错误:&#34;错误C2513:&#39; OpAmps&#39; :之前没有声明变量&#39; =&#39;&#34; 这可能与我使用错误类型的if?
有关答案 0 :(得分:1)
这是“链接时间”错误。您对enter
参数的声明......
void enter(Cars&, unsigned long);
与enter
参数的实现不符:
void enter(unsigned long Cars)
您需要enter
的实现与您使用它的方式相匹配(同时引用Cars
和unsigned long
)。由于你的编译器看到你声明它并在没有实现它的情况下使用它,“未解析的外部”是编译器说它无法找到它的方式。
您的申报和实施之间现在有几个新问题:
1)decalaration表示你有两个变量,一个是Cars&
类型,另一个是unsigned long
类型:
void enter(Cars&, unsigned long);
您的实现没有逗号或变量名称(声明只需要类型,但实现也需要名称,因此您可以使用它们)。而不是void enter(Cars& unsigned long)
你应该......
void enter(Cars& arg_cars, unsigned long arg_number) {...}
其中arg_cars
和arg_number
是两个变量的名称。
2)您想要更改函数中的第一行以检查您传入的数字:
if (arg_number == DATABASE_MAX) { ... }
3)您没有在任何地方定义DATABASE_MAX
。