#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
много указателей.