#include "stdafx.h"
using namespace std;
struct Student
{
int id;
double gpa;
};
template<class T>
class Store
{
public:
Store();
T &getElem();
void putElem(const T &x);
private:
T item;
bool haveValue;
};
template<class T>
Store<T>::Store()
{
haveValue=false;
}
template<class T>
T& Store<T>::getElem()
{
if (haveValue)
{
return item;
}
else
{
cout<<"ERROR!"<<endl;
exit(1);
}
}
template<class T>
void Store<T>::putElem(const T &x)
{
haveValue=true;
item=x;
}
int main()
{
Store<int> s1,s2;
s1.putElem(1);
s2.putElem(2);
cout<<s1.getElem()<<" "<<s2.getElem()<<endl;
Student a={1003,3.73};
Store<Student> s3;
s3.putElem(a);
cout<<s3.getElem().gpa<<endl;
system("Pause");
return 0;
}