Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 存在从派生*到基*的转换,但无法访问_C++_Inheritance - Fatal编程技术网

C++ 存在从派生*到基*的转换,但无法访问

C++ 存在从派生*到基*的转换,但无法访问,c++,inheritance,C++,Inheritance,为什么下面的代码会产生这个错误,即使c是一个结构并且默认有一个公共继承 struct c { protected: int i; public: c(int ii=0):i(ii){} virtual c *fun(); }; c* c::fun(){ cout<<"in c"; return &c(); } class d : c { public: d(){} d* fun() { i

为什么下面的代码会产生这个错误,即使c是一个结构并且默认有一个公共继承

struct c 
{
protected:
    int i;
public:
    c(int ii=0):i(ii){}
    virtual c *fun();
};

c* c::fun(){
    cout<<"in c";
    return &c();
}

class d : c
{
 public:
    d(){}
    d* fun()
    {
        i = 9;
        cout<<"in d"<<'\t'<<i;
        return &d();
    }
};


int main()
{
    c *cc;
    d dd;
    cc = &dd;
    cc->fun();
}
struct c
{
受保护的:
int i;
公众:
c(intⅡ=0):i(ii){}
虚拟c*fun();
};
c*c::fun(){
您是否需要:

class d : public c
class
继承默认为
private


当您私下从
结构
继承时,您明确表示,从派生类型直接转换为基类型是不可能的。

格里戈尔先生再次获胜。谢谢您,好心的先生!您的回答真的很有帮助!