#ifndef TVIRTFUNCPRINTFUNC_H
#define TVIRTFUNCPRINTFUNC_H

#include <tvirtfuncApp.h>

class tvirtfuncAppA;
class tvirtfuncAppB;

/*!
\brief Interface for objects simulated as a templated virtual functions.

All classes simulating templated virtual functions
 need to be visible in this interface.

This technique is using the visitor pattern.

*/
class tvirtfuncPrintfunc
{
public:

  virtual void visit( tvirtfuncAppA & app ) const = 0;
  virtual void visit( tvirtfuncAppB & app ) const = 0;

  virtual ~tvirtfuncPrintfunc() {}
};



#endif



