#include <stdio.h>
#include <cstdlib>

template <class CLASSNAME>
class a
{
public:
	typedef void (CLASSNAME::*myFunction)();

	a(CLASSNAME& myObject, myFunction callback) :
	m_myObject(myObject)
	{
		m_myFuntion = callback;
	}

	void update()
	{
		(m_myObject.*m_myFuntion)();
	}

	myFunction m_myFuntion;
	CLASSNAME& m_myObject;
};


class dummy
{
public:
	dummy()
	{
		var = 14;
	}


	void func()
	{
		printf("func!!");
	}

	int var;
};


int main()
{
	dummy dum;

	a<dummy> avar(dum, &dummy::func);

	avar.update();
}