* প্রাপ্ত থেকে বেস * রূপান্তর বিদ্যমান কিন্তু অ্যাক্সেসযোগ্য


88

সি স্ট্রাক্ট হলেও এবং ডিফল্টরূপে জনসাধারণের উত্তরাধিকার থাকলেও কেন ফোলউইং কোডটি এই ত্রুটিটি উত্পাদন করে?

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();
}

উত্তর:


168

তোমার দরকার:

class d : public c

classউত্তরাধিকার privateডিফল্টভাবে হয়।

আপনি যখন ব্যক্তিগতভাবে কোনও classবা একটি থেকে উত্তরাধিকার সূচনা করেন struct, আপনি অন্যান্য বিষয়গুলির মধ্যে স্পষ্টভাবেই বলবেন যে, উত্পন্ন ধরণ থেকে বেস ধরণের সরাসরি রূপান্তর সম্ভব নয় possible


জনাব গ্রিগোর আবারও জয়ের জন্য। ধন্যবাদ, দয়ালু স্যার! আপনার উত্তর সত্যিই সাহায্য!
এম.আনুনট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.