| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 
 | #include <iostream>
#include <boost/shared_ptr.hpp>
 
struct base
{
   virtual ~base(){}
   virtual void do_it() const
   {
      std::cout<<"base::do_it\n";
   }
 
   virtual void do_it_non_const()
   {
      std::cout<<"base::do_it_non_const\n";
   }
};
 
struct derivee : public base
{
   virtual void do_it() const
   {
      std::cout<<"derivee::do_it\n";
   }
 
   virtual void do_it_non_const()
   {
      std::cout<<"derivee::do_it_non_const\n";
   }
};
 
void ma_fonction(boost::shared_ptr<base> const&p)
{
   p->do_it();
}
 
void ma_fonction_non_const(boost::shared_ptr<base> &p)
{
   p->do_it_non_const();
}
 
int main()
{
   boost::shared_ptr<derivee> p(new derivee);
   ma_fonction(p);
   boost::shared_ptr<base> pb = p;
   ma_fonction_non_const(pb);
   return 0;
} | 
Partager