X is a base class in which 'data' is being set. while executing the code I am getting this error: In function `main':
undefined reference to `X::data;
Can anyone please help me resolve this error.
Any help will be appreciated.
#include <iostream>
using namespace std;
struct ICP{ int id; };
struct Q752{ int id; };
class X
{
protected:
enum{ DT =0, Q7};
static void *data;
public:
X();
~X();
static void *get() { return data; }
static void set(int type)
{
cout << "X::set()" <<endl;
switch(type)
{
case DT:
{
cout << "case: ICP" <<endl;
ICP* dt= new ICP;
dt->id = 10; data = dt;
}
break;
case Q7:
{
cout << "case: Q752" <<endl;
Q752* dt1 = new Q752;
dt1->id = 20; }
break;
default:
cout << "Invlaid type";
}
}
static void delX(int type) { if(data)
switch(type){
case DT:
delete (ICP*)data;
case Q7:
delete (Q752*)data;
default:
cout<< "DEL ERROR" << endl;
}
}
};
class A{
friend class X;
public:
A();
~A() { X::delX(0); }
static void set(int type) {X::set(type);}
static ICP *get() { return (ICP *)X::get();}
};
class B{
friend class X;
public:
B();
~B(){ X::delX(1); }
static void set(int type) {X::set(type);}
static Q752*get() { return (Q752*)X::get();}
};
int main()
{
cout << "Set() is Start!!" <<endl;
A::set(0);
cout << "Set() is Done!!" <<endl;
return 0;
}