Używam prywatnego dziedziczenia w projekcie, w "zaimplementowanym w kategoriach" -sense. Klasa bazowa definiuje operator [] i jest to funkcja, której chcę użyć. W ten sposób mam jednak Prywatne dziedziczenie za pomocą dyrektywy, przeciążenia?
class A : private B {
using B::operator[];
// ...
};
Jak jednak mogę kontrolować, która wersja operatora [] otrzymuję? W rzeczywistości potrzebuję więcej niż jednej, zarówno wersji
const
, jak i non-
const
. Czy można to osiągnąć?
W takim przypadku można użyć kompozycji, aby uzyskać pożądany wynik, a nie prywatne dziedziczenie. – James
Tak, wiem ... Zmieniłem go na prywatne dziedziczenie, aby zmniejszyć ilość kodu przekierowania. Więc to nie jest możliwe? W jaki sposób funkcja jest wybierana? – carlpett
Twój kod będzie znacznie łatwiejszy do napisania i konserwacji, jeśli użyjesz tutaj kompozycji zamiast prywatnego dziedziczenia. Zasadą jest, aby nie używać funkcji C++, gdy nie są one absolutnie konieczne (z tego, co powiedziałeś do tej pory, prywatne dziedziczenie nie jest w tym przypadku konieczne). –