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

Unresolved externals in c++ program

本文关键字:外部 程序 C++      更新时间:2023-10-16

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

现在我遇到的问题是,每当我编译时,它都会给我未解决的外部错误和未解决的符号错误。我在网上看了一下,大多数答案都与所谓的"链接时间"错误有关?但我不太确定这是否也适用于这里。

任何想法都会得到赞赏。

编辑:当前收到以下错误:"错误 C2513:'运算放大器':在'='之前没有声明变量"这可能与我使用错误的 if 类型有关吗?

这是一个

"链接时间"错误。 您对enter参数的声明...

void enter(Cars&, unsigned long);

enter 的参数的实现不匹配:

void enter(unsigned long Cars)

您需要一个与您使用它的方式相匹配的enter实现(同时引用Carsunsigned long(。 由于编译器看到您声明了它并在没有实现它的情况下使用了它,因此"未解析的外部"是编译器表示找不到它的方式。

帖子编辑

现在,您的声明和实现之间有几个新问题:

1( 贴花表示您有两个变量,一个是 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