1 2 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