#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <string.h>

template<class T>
class CSample
{
private:
	T One;

public: 
	int WriteOut();
	int ReadIn();

	void SetVarOne(T Data);
	void PrintValue();
};

template<class T>
void CSample<T>::SetVarOne(T Data)
{
	this->One = Data;
}

template<class T>
void CSample<T>::PrintValue()
{
	cout << One;
}

template<class T>
int CSample<T>::WriteOut()
{
	ofstream fOut;

	fOut.open("Temp.txt", ios::binary);
	if(fOut.fail())
		return 1;

	fOut << this->One;
	fOut.close();

	return 0;
}

template<class T>
int CSample<T>::ReadIn()
{
	ifstream fIn;
	T Buffer;

	fIn.open("Temp.txt", ios::binary);
	if(fIn.fail())
	{
		this->One = 0;
		return 1;
	}

	fIn >> Buffer;
	fIn.close();
		
	this->One = (T)Buffer;

	return 0;
}


int main()
{
	CSample<int> Sample;
	CSample<int> Sample1;

	// Simple Sample
	Sample.SetVarOne(5);

	cout << "Value Set:";
	Sample.PrintValue();

	cout <<endl;
	
	Sample.WriteOut();
	cout << "Value Saved To 'temp.txt':";

	cout << "Reading value into new CSample class...\n";
	Sample1.ReadIn();
	cout << "\n\nValue read from file: ";
	Sample1.PrintValue();

	cout << "\n\n";

	return 0;
}



