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


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বেস বর্গ থেকে সদস্যদের সীমাবদ্ধ privatestructঅন্যদিকে উত্তরাধিকার publicডিফল্টরূপে।


28

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

class Bar : public Foo


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