c ++程序中未解析的外部

时间:2015-12-03 22:06:06

标签: c++

所以我的项目经理给了我一些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?

有关

1 个答案:

答案 0 :(得分:1)

这是“链接时间”错误。您对enter参数的声明......

void enter(Cars&, unsigned long);

enter参数的实现不符:

void enter(unsigned long Cars)

您需要enter的实现与您使用它的方式相匹配(同时引用Carsunsigned 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_carsarg_number是两个变量的名称。

2)您想要更改函数中的第一行以检查您传入的数字:

if (arg_number == DATABASE_MAX) { ... }

3)您没有在任何地方定义DATABASE_MAX