error LNK2001: unresolved external symbol

My head is bleeding but I can't figure it out...

main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "cs187_week1.h"

int main(){
	int menuOption = 0;
	while (menuOption !=5){
		while (menuOption < 1 || menuOption > 5){
			system ("cls");
			cout << "--------------MENU--------------\n\n";
			cout << " 1. Factorial by iteration\n 2. Factorial by recursion";
			cout << "\n 3. Fibonacci by iteration\n 4. Fibonacci by recursion\n 5. Exit\n";
			cout << "--------------MENU--------------\n\n>> ";
			cin >> menuOption;
			if (menuOption < 1 || menuOption > 5){
				cout << "\nERROR: Out of Range\n\n";
				system ("pause");
			}
		}
		system ("cls");
		switch (menuOption){
			case 1	: Factorials::iteration(); break;
			case 2	: cout << "Not completed yet.\n"; break;
			case 3	: cout << "Not completed yet.\n"; break;
			case 4	: cout << "Not completed yet.\n"; break;
			default	: break;
		} cout << "\n"; if (menuOption != 5){
			system ("pause"); menuOption = 0;
		}
	}
	return 0;
}


cs187_week1.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;

class Factorials{
private:
	static int userNumber;
	static int getData(int &userNumber);
	static void showData(int &userNumber);
public:
	static void iteration();
	static void recursion();
};

int Factorials::getData(int &userNumber){
	cout << "Please enter a number between 1 and 10.\n>>";
	cin >> userNumber;
	while (userNumber < 1 || userNumber > 10){
		cout << "\nERROR: Out of Range\n>>";
		cin >> userNumber;
	}
	return userNumber;
}

void Factorials::showData(int &userNumber){
	cout << "\n" << userNumber << "! is equal to: ";
	cout << userNumber << "\n";
}

void Factorials::iteration(){
	getData(userNumber);
	for (int i = userNumber; i > 1; i--){
		userNumber *= (i-1);
	}
	showData(userNumber);
}

void Factorials::recursion(){	
}


and my error is:
1
2
3
4
5
6
7
1>Compiling...
1>main.cpp
1>Linking...
1>main.obj : error LNK2001: unresolved external symbol "private: static int Factorials::userNumber" (?userNumber@Factorials@@0HA)
1>C:\Users\hays.family\Documents\Visual Studio 2008\Projects\Discrete Structures Week 1 iteration vs recursion\Debug\Discrete Structures Week 1 iteration vs recursion.exe : fatal error LNK1120: 1 unresolved externals
1>Discrete Structures Week 1 iteration vs recursion - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



I know your pain.
Write this after line 12 in cs187_week1.h:
int Factorials::userNumber=0;

That's right. Static data has to be both declared and defined.
Me and my brain thank you... it works perfectly now.
Topic archived. No new replies allowed.