#include <iostream>
using namespace std;
int GenerateID()
{
static int nextID = 0;
return nextID++;
}
void PrintInformation(Employee EmployeeName)
{
cout << EmployeeName << "'s ID is: " << EmployeeName.ID << endl;
cout << EmployeeName << "'s age is: " << EmployeeName.age << endl;
cout << EmployeeName << "'s wage is: " << EmployeeName.wage << endl;
}
int main()
{
struct Employee
{
int ID;
int age;
float wage;
};
Employee Dominic;
Employee Jeffrey;
Dominic.ID = GenerateID();
Dominic.age = 22;
Dominic.wage = 7.10;
Jeffrey.ID = GenerateID();
Jeffrey.age = 28;
Dominic.wage = 7.10;
PrintInformation(Dominic);
PrintInformation(Jeffrey);
return 0;
}
/*
C:\CBProjects\Practise\main.cpp|11|error: variable or field 'PrintInformation' declared void|
C:\CBProjects\Practise\main.cpp|11|error: 'Employee' was not declared in this scope|
C:\CBProjects\Practise\main.cpp||In function 'int main()':|
C:\CBProjects\Practise\main.cpp|39|error: 'PrintInformation' was not declared in this scope|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 0 seconds) ===|
*/
Run Code Online (Sandbox Code Playgroud)
上面的pastebin链接显示了我使用的代码和构建报告.在此报告之后,我尝试转发声明结构而不包含成员,然后出现"不完整类型"错误.
解决办法是什么?
编辑:我正在使用c ++ 11
编辑2:如果我尝试转发声明结构,包括成员,会发生以下情况:
有两种解决方案:Employee创建非本地类/结构或创建PrintInformation模板.对于第一种解决方案,只需移动Employee 之前 PrintInformation.第二个解决方案是:
template< typename Employee >
void PrintInformation(const Employee& EmployeeName)
{
cout << " EmployeeName's ID is: " << EmployeeName.ID << endl;
cout << " EmployeeName's age is: " << EmployeeName.age << endl;
cout << " EmployeeName's wage is: " << EmployeeName.wage << endl;
}
Run Code Online (Sandbox Code Playgroud)
请注意,在任何情况下,您都不希望Employee只打印一些信息的副本,因此PrintInformation如上所示,使参数成为常量引用.
| 归档时间: |
|
| 查看次数: |
8105 次 |
| 最近记录: |