সি ++ উত্তরাধিকার - দুর্গম বেস?


157

আমি একটি ফাংশন প্যারামিটার হিসাবে বেস ক্লাস ব্যবহার করতে অক্ষম বলে মনে হচ্ছে, আমি কি আমার উত্তরাধিকার নিয়ে গোলযোগ করেছি?

আমার মূল বিষয়গুলিতে আমার নিম্নলিখিত রয়েছে:

int some_ftn(Foo *f) { /* some code */ };
Bar b;
some_ftn(&b);

এবং ক্লাস বার এমনভাবে ফু থেকে উত্তরাধিকার সূত্রে প্রাপ্ত:

class Bar : Foo
{
public:
    Bar();
    //snip

private:
    //snip
};

এটি কি কাজ করা উচিত নয়? আমার প্রধান ফাংশনে আমি কলটি করতে সক্ষম হব বলে মনে হচ্ছে না

উত্তর:


287

আপনাকে এটি করতে হবে:

class Bar : public Foo
{
    // ...
}

একটি ডিফল্ট উত্তরাধিকার টাইপ classC ++ হয় privateতাই কোনো, publicএবং protectedবেস বর্গ থেকে সদস্যদের সীমাবদ্ধ private। structঅন্যদিকে উত্তরাধিকার publicডিফল্টরূপে।


28

ডিফল্টরূপে, উত্তরাধিকার ব্যক্তিগত। আপনি স্পষ্টভাবে ব্যবহার করতে হবে public:

class Bar : public Foo


14
প্রসারণ করতে: একটিতে class, উত্তরাধিকার হয় private। একটি struct, সম্পত্তি হল publicডিফল্ট ভাবে।
— ট্র্যাভিস গোকেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.