0

I have the following header file, implementation file and main file:

Member.hpp

#ifndef _Member_
#define _Member_

#include <iostream>
#include <string>

using namespace std;
class Member
{
private:
    string Name;
    int MemNum,Birthday;

public:
    static Member* ptrBoss;

    Member(int MemNum=0, string Name="noname",int Birthday=0);

    int getBirthday() const 
    {
        return Birthday; 
    }

    void print();

    static void setBoss(Member a)
    {
        ptrBoss=&a;
    }

    static void getBoss()
    {
        ptrBoss->print();
    }

    void setName(string s)
    {
        Name = s;
    }

    void setNr(int n) {  
        MemNum= n; 
    }

    void setBday(int b)
    { 
       Birthday=b;
    }
};
#endif

My member.cpp file

#include <iostream>
#include <iomanip>
using namespace std;

Member::Member(int MemNum, string Name,int Birthday)
{
    setNr(MemNum); 
    setName(Name); 
    setBday(Birthday);
}
    
void Member::print()
{
    cout << "Member data:\n"
    << " Number : " << MemNum << '\n'
    << " Name : " << Name << '\n'
    << " Birthday: " << Birthday << '\n'
    << endl;
    cout<<"Press Enter to get next Member";
    cin.get();
}

My main.cpp file

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        Member obj(0,"Null",0);
        Member Member1(1,"Ryan",21);
        Member Member2(2,"Josh",13);
        Member1.print();
        Member2.print();`enter code here`
        obj.setBoss(Member2);
        obj.getBoss();
    }

I am getting this error:

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\aryan\AppData\Local\Temp\ccgwJ6jB.o:tempCodeRunnerFile.cpp:(.text$_ZN6Member7setBossES_[__ZN6Member7setBossES_]+0x7): undefined reference to `Member::ptrBoss'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\aryan\AppData\Local\Temp\ccgwJ6jB.o:tempCodeRunnerFile.cpp:(.text$_ZN6Member7getBossEv[__ZN6Member7getBossEv]+0x7): undefined reference to `Member::ptrBoss'
collect2.exe: error: ld returned 1 exit status
Lars Nielsen
  • 2,005
  • 2
  • 25
  • 48
  • `Member::ptrBoss` is not *defined* anywhere. It's only ever *declared*. –  May 31 '21 at 17:29
  • Or this? [Undefined reference to static variable c++](https://stackoverflow.com/q/16284629/7509065) Or this? [Undefined reference to static class member](https://stackoverflow.com/q/272900/7509065) – Joseph Sible-Reinstate Monica May 31 '21 at 17:43
  • This doesn't address the question, but names that begin with an underscore followed by a capital letter (`_Member_`) and names that contain two consecutive underscores are reserved for use by the implementation. Don't define them in your code. – Pete Becker May 31 '21 at 17:59
  • Thank you. That was really helpful. – ThoracicStorm May 31 '21 at 19:45

0 Answers0