Как явно привести базовый класс к дочернему? void SplitString(int choice) { char string[100]; system("clear"); LevelHead("Тестирование","Строка-Идентификатор","Сложение строк"); cout > string; Str_Indef strIndef(string); strIndef = strIndef + (Str_Indef)pointClass[strArray[choice]]; strIndef.Print(); Pause(); } /home/dikiigr/Desktop/Education/ЯВУ/Laba3/INHERIT/main.cpp|205|error: invalid conversion from ‘Stroka*’ to ‘char’ [-fpermissive]| Здравствуйте, мне нужно привести родительский класс к дочернему , чтобы использовать перегруженный оператор дочернего класса. Не знаю как это реализовать. Господа знатоки , прошу вашей помощи .
Чтобы явно привести базовый класс к дочернему, в вашем случае необходимо выполнить явное преобразование указателя на базовый класс к указателю на дочерний класс. Вот как это можно сделать в вашем коде:
void SplitString(int choice) { char string[100]; system("clear"); LevelHead("Тестирование","Строка-Идентификатор","Сложение строк"); cout << "Введите значение второго операнда" << endl; cin >> string; Str_Indef strIndef(string); // Явное приведение указателя на базовый класс к указателю на дочерний класс strIndef = strIndef + *((Str_Class*)pointClass[strArray[choice]]); strIndef.Print(); Pause(); }
Здесь ((Str_Class*)pointClass[strArray[choice]]) означает явное приведение указателя pointClass[strArray[choice] к указателю на класс Str_Class. Обратите внимание, что перед выполнением такого преобразования необходимо удостовериться, что объект, на который указывает указатель, действительно является экземпляром класса Str_Class или его дочернего класса.
Чтобы явно привести базовый класс к дочернему, в вашем случае необходимо выполнить явное преобразование указателя на базовый класс к указателю на дочерний класс. Вот как это можно сделать в вашем коде:
void SplitString(int choice){
char string[100];
system("clear");
LevelHead("Тестирование","Строка-Идентификатор","Сложение строк");
cout << "Введите значение второго операнда" << endl;
cin >> string;
Str_Indef strIndef(string);
// Явное приведение указателя на базовый класс к указателю на дочерний класс
strIndef = strIndef + *((Str_Class*)pointClass[strArray[choice]]);
strIndef.Print();
Pause();
}
Здесь ((Str_Class*)pointClass[strArray[choice]]) означает явное приведение указателя pointClass[strArray[choice] к указателю на класс Str_Class. Обратите внимание, что перед выполнением такого преобразования необходимо удостовериться, что объект, на который указывает указатель, действительно является экземпляром класса Str_Class или его дочернего класса.