?
Solved

Passing a data structure by reference causes lnk2019 error

Posted on 2008-10-05
3
Medium Priority
?
331 Views
Last Modified: 2013-12-14
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

0
Comment
Question by:mike_hale
  • 2
3 Comments
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 2000 total points
ID: 22644382
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
 
LVL 3

Author Comment

by:mike_hale
ID: 22645622
*slaps forehead*

Duh!  That worked.  Thank you Jaime!  
0
 
LVL 3

Author Closing Comment

by:mike_hale
ID: 31503150
Thank you!  
0

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Programmer's Notepad is, one of the best free text editing tools available, simply because the developers appear to have second-guessed every weird problem or issue a programmer is likely to run into. One of these problems is selecting and deleti…
Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

589 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question