编译器在声明 class 时显示未定义的结构错误
Compiler shows undefined structure error while declaring a class
错误信息:
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[]);
我已经为我的问题实施了同样的事情,而且它奏效了。
错误信息:
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[]);
我已经为我的问题实施了同样的事情,而且它奏效了。