C Как вы можете указать на частный унаследованный объект класса внутри класса

#c #class #pointers #inheritance #private-inheritance

#c #класс #указатели #наследование #частное наследование

Вопрос:

Я изучаю наследование классов и хотел бы знать, как можно создать указатель на класс, который был унаследован другим классом в частном порядке? Я включил простой пример ниже. Большое спасибо тем, кто помогает ответить на этот вопрос.

 class A: private std::string
{
public: 
A(){}
~A(){}

void func1() 
{
// I want a pointer that points to the std::string object. Then I will use that pointer in this function
}
};
 

Комментарии:

1. Необходимо прочитать: не наследовать от стандартных типов . Вы готовитесь выстрелить себе в ногу.

2. Не существует такого понятия, как «указатель на класс»

Ответ №1:

Так же просто , как

 std::string* p = this;
 

Поскольку A производный от std::string , A* неявно преобразуется в std::string* (где, конечно, этот базовый класс действительно доступен).

Комментарии:

1. @PeteBecker func1 — это тоже функция-член, поэтому слишком this много указателей.