c++ Calling class method from another class (unresolved external symbol error)

I have a class called TimeCard, which under its constructor, calls a method defined in a friended class (Time2). But when I compile it, I get this error:

error LNK2019: unresolved external symbol "int __cdecl getHours(void)" (?getHours@@YAHXZ) referenced in function "public: __thiscall TimeCard::TimeCard(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,int,int,bool)" (??0TimeCard@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HHH_N@Z)

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  class Time2 {
	private:
		int hour;
		int minute;
		int second;
		bool ampm;
		friend class Timecard;
		...

	public:

		Time2(int hour, int minute, int second, bool ampm) {
		this->hour = hour;
		this->minute = minute;
		this->second = second;
		this->ampm = ampm;
		}

		int getHours() {
		return hour;
		}

        string getCurrentTime() {

		formatted = hour << ':' << minute << ':' << second;
		return formatted;

	}

    }


    }


    TimeCard() {
	........
	Public:
		TimeCard::TimeCard(string WorkerID, int h, int m, int s, bool ap) {
			..........
			Time2(h, m, s, ap);
			punchInH = getHours(); //causes the unresolved external symbol error
		}
        ........
        void getPunchInTime() {  //this as well causes external symbol error`
			sTime = getCurrentTime();
		}
     }

    int main()
    {
     .....
     TimeCard Tom [1] = { TimeCard(iD, hours, minutes, seconds, ampm) };

     return 0;
    };


When punchInH = getHours(); is removed (as well as void getPunchInTime()), code runs without problem. But I need it in this specific format because Time2 needs to handle getCurrentTime() within the TimeCard class. How can I get rid of this error?
Last edited on
Line 42: getHours() does not appear to exist in your TimeCard class. You haven't shown timecard.h, so don't know if TimeCard inherits from Time2 or not (appears not).

Line 38: public should not be capitalized.

Line 7: Your capitalization of Timecard does not match your class name (TimeCard) so your friend declaration won't be recognized.

Line 41: Not clear what this line is supposed to be doing.


Topic archived. No new replies allowed.