error: invalid conversion from 'bottom**' to 'lefta**'
<p>I'm trying to compile and run this program .obviously, it doesn't work!my question is  why it is invalid conversion from bottom** to lefta** while bottom* can convert into lefta* ?</p>

<pre><code>#include&lt;iostream&gt;
using namespace std;
class top
{
private:
    int a;
public:
    top(int b):a(b){}
    virtual void output(){cout&lt;&lt;a&lt;&lt;endl;}
};
class lefta:virtual public top
{
private:
    int b;
public:
    lefta(int c,int d):top(c),b(d){}
    void output(){cout&lt;&lt;b&lt;&lt;endl;}
};
class righta:virtual public top
{
private:
    int c;
public:
    righta(int c,int d):top(c),c(d){}
    void output(){cout&lt;&lt;c&lt;&lt;endl;}
};
class bottom:public lefta,public righta
{
private:
    int d;
public:
    bottom(int e,int f,int g,int h):top(e),lefta(e,f),righta(e,g),d(h){}
    void output(){cout&lt;&lt;d&lt;&lt;endl;}
};
int main()
{
    bottom* bo=new bottom(1,2,3,4);
//  lefta* le=bo;
//  le-&gt;output();
    bottom** p_bo=&amp;bo;//here
    lefta** p_le=p_bo;//here
    (*p_le)-&gt;output();
    return 0;
 }
</code></pre>
