class A
{
long *p;
public:
A():p(NULL)
{
};
A(A& p):p(p)
{
};
template<class T>A(T val):p(val)// 1
{
};
operator long*()
{
return p;
};
};
class B
{
virtual void f(void)// 2
{
};
};
class C:public A,public B
{
};
void main()
{
C c;
/*
Ошибка
Если // 1 и // 2
warning C4717: 'C::C' : recursive on all control paths, function will cause runtime stack overflow
*/
A a=c;
/*
Правильно
*/
A a;
a=c;
};