Здравствуйте, мне нужно привести родительский класс к дочернему , чтобы использовать перегруженный оператор дочернего класса. Сам перегруженный оператор задается как дружественныя функция, так как принимает два значения .
pointClass[0] - указатель который инициализирован как бызовый класс
void SplitString(int choice)
{
char string[100];
system("clear");
cout << "Введите значение второго операнда" << endl;
cin >> string;
Str_Indef strIndef(string);
strIndef = strIndef + (Str_Indef)*pointClass[0]; // Так я привожу и не работает
strIndef.Print();
Pause();
}
Код перегрузки.
const Str_Indef operator +(const Str_Indef& right, const Str_Indef& left)
{
std::cout << "ПЕРЕГРУЗКА ОПЕРАЦИИ + [Строка-Идетификатор]" << std::endl;
char *pointerChar = new char[right.size + left.size-1];
strcpy(pointerChar, left.p_char);
strcat(pointerChar, right.p_char);
Str_Indef returnString;
returnString.p_char = pointerChar;
returnString.size = strlen(pointerChar);
return returnString;
};
Сама перегрузка реализована в виде дружественной функции , а они как известно не могут быть виртуальными, что и не позволяет их наследовать.