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

Как явно привести базовый класс к дочернему?

void SplitString(int choice)
{
    char string[100];

    system("clear");
    LevelHead("Тестирование","Строка-Идентификатор","Сложение строк");
    cout << "Введите значение второго операнда" << endl;
    cin >> 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]|

Здравствуйте, мне нужно привести родительский класс к дочернему , чтобы использовать перегруженный оператор дочернего класса. Не знаю как это реализовать. Господа знатоки , прошу вашей помощи .
  • Вопрос задан
  • 787 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
мне нужно привести родительский класс к дочернему

Вам, наверно, указатель или ссылку надо привести.

Любым из 4 операторов приведения типа (кроме const_cast), в порядке уменьшения кошерности (а если виртуальных функций в A нет, то тремя, начиная со static_cast):
class A
{
public:
    virtual ~A() {}
};
class B : public A
{
};

A *pa = ...;
B *pb1 = dynamic_cast<B*>(pa);
B *pb2 = static_cast<B*>(pa);
B *pb3 = (B *)pa;
B *pb4 = reinterpret_cast<B*>(pa);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Я подозреваю что вам надо вот это:

#include <iostream>

class Base
{
public:
   virtual void foobar(){}
   // или:
   //virtual void foobar() = 0;
   virtual ~Base(){}
};

class Child : public Base
{
public:
    virtual ~Child() {}
    void foobar() override { std::cout << "foobar" << std::endl; }
};

int main()
{
    Base *b = new Child;
    b->foobar();
    delete b;
    return 0;
}


Без приведений типов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы