Описание тега private-inheritance

Private inheritance is a form of inheritance is which the public and protected portion of the base class becomes private in the derived class and the derived class has no access to the private members and methods of the base class.
2 ответа

Можно ли скрыть перегруженный метод при использовании частного наследования в C++

class Foo { public: int fn() { return 1; } int fn(int i) { return i; //2nd fn() } }; class Bar:Foo { public : Foo::fn; }; int main(int argc, char** argv) { Bar b; cout<<b.fn(2)<<endl; } можно скрыть fn(int) в конкретном классе "Bar"
26 ноя '11 в 20:17
3 ответа

Почему частное наследование не разрешает неоднозначность для статических функций? (проверено в MSVC)

Мне интересно, почему вызов статической функции неоднозначен, даже если одно из двух явным образом невозможно вызвать, поскольку оно является частным. Я надеялся, что смогу использовать частное / защищенное наследование, чтобы помочь компилятору реш…
1 ответ

Частное наследство против сдерживания

Объясняя, когда необходимо использовать частное наследование, а не сдерживание, автор этой статьи говорит следующее: "Нам нужно создать использованный объект до или уничтожить его после другого базового подобъекта. Если имеет значение немного более …
4 ответа

Что такое частное наследование и какие проблемы оно решает?

Может ли кто-нибудь объяснить, для чего конкретно закрытое / защищенное наследование в C++, и какую проблему (проблемы) он намеревается решить? class Bar { }; class Foo : private Bar { }; Я уже видел этот вопрос, но я все еще не понимаю, что это так…
26 ноя '11 в 20:24
3 ответа

Ошибочный частный базовый класс недоступен?

Компиляция этого кода с использованием g++ 4.2.1: struct S { }; template<typename T> struct ST { }; template<typename BaseType> class ref_count : private BaseType { }; template<typename RefCountType> class rep_base : public RefCoun…
5 ответов

Одновременное частное и публичное наследование в C++

Предположим, класс Y публично наследует класс X, Это возможно для класса Z унаследовать в частном порядке Y при публичном наследовании X? Чтобы сделать это более понятным, предположим, X определяет публичные методы x1 а также x2, Y наследуется X, пе…
4 ответа

Использование частного наследования, как описано в "Языке программирования C++"

В языке программирования C++, 4-е издание, в §20.5.2 "Доступ к базовому классу" (стр. 605), говорится (в отношении частного наследования): частные базы наиболее полезны при определении класса путем ограничения интерфейса базой, чтобы можно было обес…
14 июн '17 в 11:23
5 ответов

Как вызвать статический метод из частного базового класса?

Из-за компоновки сторонней библиотеки у меня есть что-то вроде следующего кода: struct Base { static void SomeStaticMethod(){} }; struct Derived1: private Base {}; struct Derived2: public Derived1 { void SomeInstanceMethod(){ Base::SomeStaticMethod(…
06 сен '16 в 13:16
1 ответ

Разница между тремя явными апкастингами в частный базовый класс

У меня есть три типа приведенных ниже между частным унаследованным объектом базового класса и дочерним объектом, два из них работают, но последний - нет. Мне интересно, что вызывает разные результаты. #include<iostream> #include <string>…
4 ответа

Почему частное наследование увеличивает вероятность того, что кто-то нарушит мой код по сравнению с композицией?

Автор этой статьи утверждает, что "Обычно вы не хотите иметь доступ к внутренним компонентам слишком многих других классов, и частное наследование дает вам некоторую дополнительную силу (и ответственность). Но частное наследование не является злом; …
08 фев '12 в 18:17
1 ответ

Почему auto_ptr нарушает частное наследование в Visual C++?

Справочная информация: это было обнаружено в Visual Studio 2008 и снова подтверждено в Visual Studio 2013. G++ закричал в коде, в то время как Visual молча принял частное нарушение наследования. Итак, на Visual C++ у нас есть следующий код: class Ba…
19 июн '14 в 09:54
2 ответа

Как можно назвать членов-родителей в частном наследовании?

Я прохожу книгу по шаблонам дизайна от GoF - онлайн-ссылка. В этой книге в разделе "Шаблон адаптера" в разделе "Образец кода" я встретил этот конкретный код: class TextView { public: TextView(); void GetOrigin(Coord& x, Coord& y) const; void…
03 мар '12 в 10:42
1 ответ

Как лучше всего выставить частное наследование базовому классу?

Я проектирую иерархию объектов, в которой базовый класс всех объектов Node, который, как ожидается, будет разделен на подклассы. Подклассы Node будет содержать дочерние элементы, но тип дочернего элемента может варьироваться от одного подкласса к др…
2 ответа

Как использовать Private Inheritance aka C++ в C# и почему его нет в C#

Я знаю, что частное наследование поддерживается в C++, а в C# поддерживается только публичное наследование. Я также натолкнулся на статью, в которой говорится, что частное наследование обычно определяет отношения HAS-A и тип отношений агрегации межд…
3 ответа

Когда использовать частное наследование C++ над композицией?

Можете ли вы привести конкретный пример, когда предпочтительнее использовать личное наследование, чем композицию? Лично я буду использовать композицию поверх частного наследования, но в некоторых случаях использование частного наследования является …
1 ответ

Тип оператора в частной базе

Я нашел кое-что странное поведение в C++: оператор приведения типов в закрытом базовом классе сбивает с толку компилятор при попытке разрешить неявное приведение: #include <iostream> struct Base { #ifdef ENABLE operator bool () const { return …
2 ответа

Объектная реализация couting с использованием композиции в C++

В более эффективном C++ Мейерс описал способ подсчета экземпляров объектов с помощью базового класса подсчета объектов (пункт 26). Можно ли реализовать тот же метод с использованием композиции, как показано ниже. Есть ли конкретное преимущество испо…
31 май '14 в 13:01
1 ответ

Почему публикуется имя, когда мы хотим унаследовать базовый класс в частном порядке?

Как правило, мы хотим использовать частное наследование, чтобы скрыть детали реализации в базовом классе. Если это правда, 1) Почему функция публикации имени снова появилась? Это только для полноты языка или есть практическое применение? 2) Несмотря…
03 май '16 в 01:14
1 ответ

Нужна помощь в разработке с использованием частного наследования

У меня проблема со следующей ситуацией: библиотека (CardReader) реализует протокол ISO7816 и связывается со смарт-картой (реализованной мной). Я должен реализовать собственный протокол, который использует эту библиотеку. В CardReader имеются следующ…
3 ответа

Ошибка компилятора C++ при частном наследовании

Может кто-нибудь объяснить мне следующую ошибку компилятора: struct B { }; template <typename T> struct A : private T { }; struct C : public A<B> { C(A<B>); // ERROR HERE }; Ошибка в указанной строке: test.cpp:2:1: error: 'struct B…