<insert name of struct> was not declared in this scope
c++, struct
Solution
There are two solutions: Make `Employee` a non-local class/struct or make `PrintInformation` a template. For the first solution, just move `Employee` before `PrintInformation`. The second solution would be:
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;
}
Note that in any case you don't want a copy of `Employee` just to print some information, hence make the parameter of `PrintInformation` a constant reference as shown above.
Problem
http://pastebin.com/4gvcQm7P ``` #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) ===| */ ``` The above pastebin link shows the code I used and the build report. Following this report I attempted to forward declare the struct without including members and then there is an 'incomplete type' error. What is the solution? Edit: I'm using c++11 Edit 2: Here is what happens if I try to forward declare the struct, including the members: http://pastebin.com/rrt4Yjes#