@frilix
Иногда "творю"

Наследование бинарной перегрузки?

Здравствуйте, мне нужно привести родительский класс к дочернему , чтобы использовать перегруженный оператор дочернего класса. Сам перегруженный оператор задается как дружественныя функция, так как принимает два значения .

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;
};


Сама перегрузка реализована в виде дружественной функции , а они как известно не могут быть виртуальными, что и не позволяет их наследовать.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
dynamic_cast, static_cast, reinterpret_cast
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 13:07
10000 руб./за проект
27 нояб. 2024, в 12:53
70000 руб./за проект
27 нояб. 2024, в 12:50
25000 руб./за проект