[ create a new paste ] login | about

Link: http://codepad.org/VVjGIDQL    [ raw code | output | fork ]

C++, pasted on Mar 2:
template<class T> class User;

class UserInterface
{
  public:

  virtual void use() = 0;
  virtual ~UserInterface() {}
};

template<class T> class User : public UserInterface
{
  T data;

  public:

  User( T const& v) : data(v) {}
  virtual void use() 
  {
     std::cout << data << std::endl;
  }
};

class Bar
{
  
  UserInterface* owner;

  public:
  template<class T>
  void setOwner(User<T>* o) { owner=o; }

  void use()  { owner->use(); }
};

int main()
{
  User<float> f(0.123456f);
  User<string> s( std::string("lol") );

  Bar b;

  b.setOwner(&f);
  b.use();

  b.setOwner(&s);
  b.use();

}


Output:
1
2
0.123456
lol


Create a new paste based on this one


Comments: