Passing a data structure by reference causes lnk2019 error

I'm pasting the code below, and the function in question at the top again.  
The function immediately below causes the error.  If I pass by value, it doesn't throw the error at me.  I've also posted the error below.

Thanks!

void fnCalculate(userInput& tempVar1){
}

Error      1      error LNK2019: unresolved external symbol "void __cdecl fnCalculate(struct userInput)" (?fnCalculate@@YAXUuserInput@@@Z) referenced in function "void __cdecl fnGetUserInput(void)" (?fnGetUserInput@@YAXXZ)      main.obj      

#include <iostream>
using namespace std;
struct userInput{
	int units;
	int session;
	int residency;
	char parking;
	char sticker;
	char IDCard;
};
char fnTryAgain(char);
void fnGetUserInput();
void fnCalculate(userInput);
int main()
{
	int varAnswer=1;	
	cout << "Programing running..." <<endl;
	cout << "SMC Fee Calculator."<<endl;		
	while (varAnswer == 1)
	{
	fnGetUserInput();
	varAnswer = fnTryAgain(' ');
	}
	return 0;
}
void fnGetUserInput()
{
	userInput strInput;
	cout << "Enter the number of units enrolled: ";
	cin >> strInput.units;
	cout << "Is this Fall[0], Winter[1], Spring[2] or Summer[3]: ";
	cin >> strInput.session;
	cout << "Are you a state resident[0], non-resident[1] or F1 Visa holder[2]: ";
	cin >> strInput.residency;
	cout << "Do you want a parking decal [y/n]: ";
	cin >> strInput.parking;
	cout << "Do you want an AS sticker [y/n]: ";
	cin >> strInput.sticker;
	cout << "Do you want an ID card [y/n]: ";
	cin >> strInput.IDCard;
	fnCalculate(strInput);
}
 
void fnCalculate(userInput& tempVar1){
 
}
char fnTryAgain(char varReply2)
{
	char varReply1=' ', varReply=' ';
	cout << endl << endl << "Try another scenario?  Enter n for no, any other key for yes: ";
	cin >> varReply1;
	if (varReply1 == 'n'){
		varReply = 0;
	}
	else if (varReply1 == 'N'){
		varReply = 0;
	}
	else
		varReply = 1;
	return varReply;
}

Open in new window

LVL 3
mike_haleAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
Jaime OlivaresConnect With a Mentor Software ArchitectCommented:
both the declaration of the function and the implementation must match the same type of arguments.
So, your declaration at line 13:

     void fnCalculate(userInput);

should be:

     void fnCalculate(&userInput);

to match the implementation at line 44
0
 
mike_haleAuthor Commented:
*slaps forehead*

Duh!  That worked.  Thank you Jaime!  
0
 
mike_haleAuthor Commented:
Thank you!  
0
All Courses

From novice to tech pro — start learning today.