Hello
I have the following scenario:
#include <iostream>
#include
class A
{
public:
virtual void func1() { std::cout << "A::func1" << std::endl; }
};
class B : public A
{
public:
void func1() { std::cout << "B::func1" << std::endl; }
void funcB() { std::cout << "B::funcB" << std::endl; }
};
class C : public A
{
public:
void func1() { std::cout << "C::func1" << std::endl; }
void funcC() { std::cout << "C::funcB" << std::endl; }
};
class Holder
{
boost::shared_ptr<A> aptr;
public:
void setclass(boost::shared_ptr<A> a) { aptr = a; }
void callfunc() { aptr->func1(); }
};
int main()
{
Holder holder;
boost::shared_ptr<B> b(new B());
boost::shared_ptr<C> c(new C());
holder.setclass(b); //<-------
holder.setclass(c); //<-------
holder.callfunc();
return 0;
}
VC++ 6.0 flags the above lines with a conversion error.
Is there any way to resolve this?
Thanks very much in advance.