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

Производный класс не видит перегруженную операцию базового класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при выполнении программы http://www.cyberforum.ru/cpp-beginners/thread839515.html
//set.h #pragma once typedef unsigned short WORD; class Set { private: int minElem; int maxElem;
C++ Дерево поиска Всем добрый полдень:) Помогите пож-та решить вот такую вот задачку: В текстовом файле задан алфавит(на англ(a-z), нужно построить бинарное дерево поиска:)Плиииииз( буду очееееееень благодарна..... Добавлено через 1 час 47 минут ????????????????????????????????? http://www.cyberforum.ru/cpp-beginners/thread839508.html
Определить, в каком из двух целых чисел больше цифр C++
Составить программу решения задачи с использованием подпрограмм. Определить, в каком из данных двух целых чисел больше цифр.
Объектно-ориентированное программирование (возведение числа в степень) C++
Объясните пожалуйста как реализовать метод в Борланде Поле First-дробное число;Поле Second-целое число показатель степени. Реализовать метод Power()-возведение числа first в степень second.Метод должен правильно работать при любых допустимых значениях first i second. Объясните как это можно реализовать
C++ Считать текст из файла и вывести слова в виде списка http://www.cyberforum.ru/cpp-beginners/thread839451.html
нужна помощь, кому не тяжело собственно, заранее благодарен Вот само условие "написать программу, которая считывает текст из файла и выводит слова в виде списка"
C++ Имеется строка "AAABBCCAA", нужно вывести на экран "3A2B2C2A", и так же сделать обратное действие Доброго времени суток. Помогите организовать, желательно с примером, такую программу: имеется строка "AAABBCCAA"(так же можно абсолютно любую другую), нужно вывести на экран "3A2B2C2A", и так же сделать обратное действие. как это можно сделать? подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
17.04.2013, 13:48     Производный класс не видит перегруженную операцию базового класса
Теперь все понятно)) Единственное не понял почему в таком случае не ставятся круглые скобки в конце перегрузки оператора.
Судя по всему, не очень Допустим, есть следующая иерархия классов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A
{
public:
    void f();
    void f(int);
    void f(int, int);
};
 
class B : public A
{
public:
    // перекрываем метод с именем f(если не иcпользовать using, то у класса B будет своя версия метода f...
    //... к тем его перегрузкам, что находятся в А можно будет обратиться только, если явно указать их область видимости...
    //... например, имя_объект.A::f())
    void f(int, int);
    void f(int, int, int);
};
Используя ключевое слово using можно явно указать, что класс потомок, помимо уже определённых в нём методов, будет использовать реализции методов определённых с тем же именем в указаном классе предке
C++
1
2
3
4
5
6
7
8
9
10
class B : public A
{
public:
    void f(int, int);
    void f(int, int, int);
    
    // использовать f из А без указания области видимости
    // при этом из A будут использоваться только f() и f(int) потому как метод f(int, int) переопределён)
    using A::f; 
};
Т.е. это не включение какой-то отдельной перегрузки класса предка, а указание использовать все не переопределённые в классе потомке реализации.

Как быть в ситуации если нужно будет операция с аргументом? К примеру operator++(int).
Если в случае перекрытия нужно использовать реализацию отдельного метода класса предка, то можно просто вызвать необходимый метод явно
C++
1
2
3
4
5
6
7
8
9
class B : public A
{
public:
    void f(int x)
    {
        A::f(x);
    }
//...
};
 
Текущее время: 20:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru