编译器在声明 class 时显示未定义的结构错误

Compiler shows undefined structure error while declaring a class

错误信息:

Link to full program

class AddressBook
{
private:   
char firstname[20];
char lastname[20];
char no[15];

class adrs
{
public:
char postal[100];
char pincode[7];
friend void say();
friend void Add();
friend void Edit();
friend void View(int);
}address;
char dob[11];
char email[50];

public:
friend void say();
void sort(AddressBook []);
void NumberSort(AddressBook []);
void Add(void);
void Delete(AddressBook [], int pos);
void Edit();
void LinearSearch(AddressBook [], char a[]);
friend void ViewAll();
void View(int);
void FetchContact();
};

这是通讯簿程序的 class 声明。

 void sort(AddressBook []);
 void NumberSort(AddressBook []); 
 void Delete(AddressBook [], int pos); 
 void LinearSearch(AddressBook [], char a[]);

上述声明中的这些行在 TurboC++ 编译器中显示为错误。谁能告诉我为什么?

由于您无法生成最小示例,我为您做了:

class AddressBook
{
  void sort(AddressBook[]);
};

此声明在现代编译器上编译良好,但在 Turbo C++ 上编译不佳。 您可以将此称为编译器错误。

有两种选择:

  • 你重新考虑你的程序并用另一种方式编写它
  • 您使用现代 C++ 编译器

转学是另一个有价值的选择。

在 C++ 中,当数组作为参数传递时,它的初始地址被传递给形式参数。借助这种技术,代码可以写成如下

 void sort(AddressBook*);
 void NumberSort(AddressBook*); 
 void Delete(AddressBook*, int pos); 
 void LinearSearch(AddressBook*, char a[]);

我已经为我的问题实施了同样的事情,而且它奏效了。