Форум программистов, компьютерный форум CyberForum.ru

Виртуальные функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Попадает ли точка А в область отрицательных значений X? BORLAND_ TURBO C++ PROFESSIONAL 2006 http://www.cyberforum.ru/cpp-beginners/thread723585.html
Составить блок-схему алгоритма. Написать и отладить программу раразвлетвляющего процесса с использованием алгоритма IF. Ввод координат точки осуществить с экрана; в качестве заголовка окна вводда свою фамилию; определить, попадает ли точка в заданную область, вывести на экран координаты точки и ответ о местоположении точки. Добавлено через 43 секунды Помогите пожалуйста, спасибо!
C++ Сделать конвертер из футов и дюймов в целые метры миллиметры и сантиметры(1 фут = 12 дюймам, 1 дюйм=25.4 мм)заранее благодарен Сделать конвертер из футов и дюймов в целые метры миллиметры и сантиметры(1 фут = 12 дюймам, 1 дюйм=25.4 мм)заранее благодарен. http://www.cyberforum.ru/cpp-beginners/thread723581.html
C++ Сформировать матрицу размером MxN и найти наибольшее среди средних арифметических элементов ее строк.
Сформировать матрицу размером MxN и найти наибольшее среди средних арифметических элементов ее строк. Очень нужна ваша помощь. Заранее спасибо.
C++ Найти максимальный и минимальный элемент матрицы
Дано натуральное число N. Сформировать произвольную матрицу размерностью NxN. Найти минимальный из элементов, расположенных под главной диагональю, и максимальный из элементов, расположенных над главной диагональю.
C++ Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр. http://www.cyberforum.ru/cpp-beginners/thread723528.html
Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.
C++ Количество елементов у массиве Можно ли каким-то образом указать количество елементов массива через параметр?? int Array , где n - параметр. подробнее

Показать сообщение отдельно
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
08.12.2012, 11:37     Виртуальные функции
Вопрос. Как вызвать функцию наследника через указатель на базовый класс?

Так не компилируется
Код
3.cpp:19:19: error: invalid covariant return type for 'virtual Child Child::foo()'
3.cpp:7:18: error:   overriding 'virtual Base Base::foo()'
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
class Base
{
public:
  
    virtual Base foo()
    {
        std::cout << "BASE!!!\n";
        return *this;
    }
    
};
 
class Child : public Base
{
public:
 
    virtual Child foo()
    {
        std::cout << "CHILD!!!\n";
        return *this;
    }
    
};
 
 
int main()
{
    Child a, b;
    Base * test = &a;
    
    test -> foo();   
       
    return 0;
}
Если убираю virtual в базовом классе - компилируется, но вызывает функцию базового. Как решить проблему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru