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

Что не так с виртуальным методом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ №3 Написать программу, вычисляющую выражение с использованием циклов http://www.cyberforum.ru/cpp-beginners/thread657264.html
Написать программу, вычисляющую выражение с использованием циклов. Программа, которая: a. запрашивает какую из приведенных в варианте задач следует выполнить, b. запрашивает необходимые данные в main, c. передает входные данные в соответствующую функцию, d. результат выводится из main, e. изменение параметров в цикле продемонстрировать с помощью окна watch. Задача: Найти сумму ряда с...
C++ Шахматная доска Ребята, помогите! Есть код на С++, выводящий на экран шахматную доску, нужно его дополнить обозначением клеток (по горизонтали 1,2,3... , и по вертикали A,B,C......) - стандартное обозначение. Может кому-то не представляет труда , я плохо в этом понимаю , а очень нужно. 1 #include<stdio.h> 2 int main() { 3 int i, j; 4 printf("Pered vami - shahmatnaya doska:\n"); 5 for (i=0;... http://www.cyberforum.ru/cpp-beginners/thread657261.html
№2 Написать программу, вычисляющую выражение с использованием циклов C++
Написать программу, вычисляющую выражение с использованием циклов. Программа, которая: a. запрашивает какую из приведенных в варианте задач следует выполнить, b. запрашивает необходимые данные в main, c. передает входные данные в соответствующую функцию, d. результат выводится из main, e. изменение параметров в цикле продемонстрировать с помощью окна watch. Задача: Дано натуральное...
C++ Переполнение сверху и снизу
Есть задача: создать класс "Целое число", в котором нужно определить методы, которые могут генерировать исключение типов переполнения сверху и снизу, а также деление на нуль. Что значить переполнение сверху и снизу? Как его реализовать? Спасибо.
C++ Вывести китайский на консоль http://www.cyberforum.ru/cpp-beginners/thread657252.html
Добрый день! Подскажите, пожалуйста, как можно вывести китайские или японские иероглифы на консоль? setlocale(LC_ALL,"ja_JP") не спасает. Пытаюсь вывести функцией wprintf(L"雌犬"); Спасибо
C++ Отсортировать строки в алфавитном порядке Помогите сделать задачу.. Отсортировать строки в алфавитном порядке по убыванию. Для критерия упорядочивания использовать подстроку длиной не более 10 символов. Программа должна использовать классы из стандартной библиотеки (iostream или fstream) и для хранения в оперативной памяти использовать динамический массивы, так чтобы отведенная память была пропорциональна размеру исходного файла. подробнее

Показать сообщение отдельно
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
24.09.2012, 19:48  [ТС]     Что не так с виртуальным методом
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
class OperationBehavior{
    public:
    virtual TMMatrix calc();
};
 
class GaussianInverse: public OperationBehavior {
    public:
      TMMatrix calc(TMMatrix* matrx_1);
 
};
 
//есть класс Калькулятор который определяет каким должен быть OperationBehavior
 
class CalculatorMatrix{
    private:
    OperationBehavior operation;
    public:
    CalculatorMatrix(OperationBehavior *operation);
    void setOperationBehavior(OperationBehavior *operation);
    OperationBehavior getOperationBehavior();
};
 
// И я пытаюсь сделать вот такую вещь
 
CalculatorMatrix calc=CalculatorMatrix(new GaussianInverse());
TMMatrix result=calc.getOperationBehavior().calc(//тут параметр типа указатель на TMMatrix));
Добавлено через 2 минуты
Цитата Сообщение от DU Посмотреть сообщение
сигнатуры виртуальной функции во всех наследниках должна быть такой же, как и в базовом классе. а не замещение (переопределение) виртуальной функции.
более подробно написано у Саттера в "Решении сложных задач", правило 3.2
Вот у вас в базе виртуальная функция такая:
virtual TMMatrix calc();
а в производном такая:
TMMatrix calc(TMMatrix* matrx_1);

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

Добавлено через 17 секунд
 
Текущее время: 11:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru