Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ практика на экзамене https://www.cyberforum.ru/ cpp-beginners/ thread548961.html
вобщем я перездаю экзамен и мне дано задание:"написать консольное приложение , которое позволяет пользователю ввести с клавиатуры 10-ть дробных чисел и вывести на экран максимальное число из этого ряда чисел". Наработок нету т.к я вобще нишуя не шарю. Прошу спасайте)
C++ B-Дерево. Поиск. Вставка. Удаление.
Доброго всем дня,есть задача: Написать программу реализующую следующие действия в B-Дереве: Поиск. Вставка. Удаление. Так же у меня есть готовая программа на Delphy, если вдруг кто сможет перевести. unit BTree; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
C++ Перегрузка операторов для класса МАССИВ https://www.cyberforum.ru/ cpp-beginners/ thread548955.html
Привет. Есть класс "вектор" ("массив"), нужно переопределить операторы =, +, - , *, +=, -=, *= с целым числом. =, +=, -=, *=, как функции члены +, - , * как дружественные функции Вопрос вот в чем. Не важно каким образом переопределяем, но как добраться до определенного эл-та? например a = 5; или
C++ Как в C++ реализовать такое вычисление (1/2tg(0.7x))* ((ln(x+1.48))/2)) https://www.cyberforum.ru/ cpp-beginners/ thread548949.html
Уважаемые знатоки, как в C++ реализовать такое вычисление (1/2tg(0.7x))* ((ln(x+1.48))/2)) при помощи использования библиотеки OpenMP, для подсчёта времени на вычисление этого выражения каждым потоком, если пользователь задаёт количество потоков.
Работа перемещающего загрузчика C++
Добрый день, необходимо разработать приложение, моделирующее работу перемещающего загрузчика. Программа считывает двоичный файл следующей структуры: N A1 A2 ... AM D0 D1 ... DK N - кол-во ячеек с адресами данных. A - ячейки с адресами данных. D - ячейки с данными. Необходимо изменить значение в области данных по адресам A1 A2 ... AM на величину S, вводимую с клавиатуры. Ячейки в файле 16...
C++ Как организовать переменную ошибки? https://www.cyberforum.ru/ cpp-beginners/ thread548933.html
Привет Что такое вроде понятно. Например переопределяем оператор для массива, если запрашиваем индекс больше чем размер массива-то выводим сообщение об ошибке и прекращаем работу данной функции(то есть ф-ии переопред. оператора). А как организовать непонимаю. Создать класс вектор, содержащий ссылку на int, размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию,...
C++ сортировка структуры в бинарном файле https://www.cyberforum.ru/ cpp-beginners/ thread548925.html
приветствую всех! появилась небольшая заминка у меня - немогу сравнить значения структуры, для того, чтоб отсортировать ее в бинарном файле. суть задачи: 1.Создать файл F1.dat, содержащий 8 записей следующей структуры: ФИО; номер телефона; день рождения (массив из трех чисел) 2.Написать программу, которая переписывает файл F1.dat в файл F2.dat таким образом, чтобы записи расположились в...
C++ Поменять местами содержимое четных и нечетных разрядов в младшем байте
1 Найти количество чисел из диапазона от 100000 до 999999, у которых произведение первых 4 разрядов равно произведению 3 последних. Сколько среди них простых чисел. 2 Задано целое число типа WORD. Поменять местами содержимое четных и нечетных разрядов в младшем байте. Алгоритм преобразования оформить в виде функции. Исходное число и результат вывести в двоичной и десятичной форме. ...
C++ Определить является ли двумерный массив логическим квадратом Определить является ли двумерный массив логическим квадратом, то есть суммы по всем горизонталям, вертикалям и двум диагоналям должны быть равны:cry: https://www.cyberforum.ru/ cpp-beginners/ thread548906.html C++ Напечатать все слова последовательности, которые встречаются в ней по одному разу. https://www.cyberforum.ru/ cpp-beginners/ thread548905.html
Дана последовательность слов. Напечатать все слова последовательности, которые встречаются в ней по одному разу. :( (P.S.ответьте пожалуйста полно...С++ знаю плохо.)
C++ Побитовые операции
Задача должна быть реализована в с++ но пришлось временно писать в дельфи. суть такая: входящие число в диапазоне 0-n (8 байт) выходящие группа чисел в виде нескольких байт с помощью которых можно представить число. Пример: входящие 65535 выходящие два числа 255 и 127. Проблемма заключаеться в том что я не уверен правильно ли выходят числа а именно в каком порядке их надо вставить. Ну...
C++ Метод релаксации неправильно работает Мне необходимо решить уравнение Пуассона методом релаксации для области во вложении. (Она целиком лежит в квадрате 3х3). Я написал код для метода релаксации, однако он даёт неправильный результат. Помогите найти ошибку. N - количество частей, Omega - параметр релаксации, eps - точность, phi - матрица начальных приближений, f - функция распределения, U - нужная матрица. void Relax(int N,... https://www.cyberforum.ru/ cpp-beginners/ thread548874.html
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
15.04.2012, 15:34  [ТС] 0

Наследование, dynamic_cast и использование последнего в связке с первым - C++ - Ответ 2913912

15.04.2012, 15:34. Показов 1637. Ответов 14
Метки (Все метки)

Ответ

Цитата Сообщение от alex_x_x Посмотреть сообщение
все - в этом месте реальный тип объекта разрушается
чтобы такого не случалось CControl должен быть абстрактным
Не получается что-то, в общем смотрите как сейчас я решил проблему:
class CControl не абстрактный, от него унаследованы CComboBox, CInput, CButton и CLabel.
Для каждого из них пришлось добавить метод Add ( я понимаю что это плохо), тоесть
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    CWindow& Add(const CComboBox& obj)
    {
        if(! head)
        {
            head= tail= new ListControl;
            head->control= new CComboBox(obj);
            Recalculate(head->control);
            head->next= NULL;
        }
 
        else
        {
            ListControl* toAdd= new ListControl;
            toAdd->control= new CComboBox(obj);
            toAdd->next= NULL;
            Recalculate(toAdd->control);
            tail->next= toAdd;
            tail= toAdd;
        }
 
        countCB++;
        return *this;
    }
 
 
    CWindow& Add(const CInput& obj)
    {
        if(! head)
        {
            head= tail= new ListControl;
            head->control= new CInput(obj);
            Recalculate(head->control);
            head->next= NULL;
        }
 
        else
        {
            ListControl* toAdd= new ListControl;
            toAdd->control= new CInput(obj);
            toAdd->next= NULL;
            Recalculate(toAdd->control);
            tail->next= toAdd;
            tail= toAdd;
        }
        return *this;
    }
 
    CWindow& Add(const CLabel& obj)
    {
         //считай тоже самое
        return *this;
     }
    CWindow& Add(const CButton& obj)
    {
     //считай тоже самое
        return *this;
    }
Напомню что список что помнит все контролы реализован так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    struct ListControl
    {
        ListControl()
        :control(NULL), next(NULL){}
 
        ListControl(const CControl& cont)
        :control(new CControl(cont)), next(NULL) {}
 
        ListControl(const CComboBox& cont)
        :control(new CControl(cont)), next(NULL) {}
 
        CControl* control;
        ListControl* next;
    } * head, *tail;
Если я сделаю класс CControl полностью виртуальным -> я не смогу создавать объекты такого класса -> что же я буду делать при добавлении контролов?

Итого придётся убрать конструкторы у структуры ListControl:
C++
1
2
3
4
5
6
7
    struct ListControl
    {
        ListControl()
        :control(NULL), next(NULL){}
        CControl* control;
        ListControl* next;
    } * head, *tail;
А метод Add сделать таким что будет принимать ссылку на CControl:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    CWindow& Add(const CControl& obj)//я без понятия что мне здесь передали
    {
        if(! head)
        {
            head= tail= new ListControl; //конструктор по умолчанию CControl* control= NULL
            head->control= new CControl(obj);//ну а тут мне чего делать? Объект типа CControl создавать же нельзя теперь
            Recalculate(head->control);
            head->next= NULL;
        }
 
        else
        {
            ListControl* toAdd= new ListControl;
            toAdd->control= new CControl(obj);
            toAdd->next= NULL;
            Recalculate(toAdd->control);
            tail->next= toAdd;
            tail= toAdd;
        }
        return *this;
    }
Добавлено через 4 минуты
Цитата Сообщение от alex_x_x Посмотреть сообщение
но так как это не так, то первоначально нужно использовать указатель CControl*
Вот это не понял. Опишите подробнее пожалуйста.

Добавлено через 35 секунд
Цитата Сообщение от alex_x_x Посмотреть сообщение
странно, что компилятор это стерпел
даже предупреждением не пискнул.

Вернуться к обсуждению:
Наследование, dynamic_cast и использование последнего в связке с первым C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2012, 15:34
Готовые ответы и решения:

Использование dynamic_cast
#include<iostream> #include<locale.h> using namespace std; class Base { public: virtual...

Использование static_cast и dynamic_cast между наследниками класса
Добрый день, Есть класс библиотеки QWT QwtScaleWidget. Я унаследуюсь от этого класса: #include...

Частое использование dynamic_cast в конкретных целях. Правильно ли?
Привет, форум. Гуманно ли использовать dynamic_cast вот в таких случаях? Пример из подобных -...

Использование whitch, enum, while в связке
Добрый день. Меня интересует данный вопрос (в названии). Как это можно реализовать? В интернете...

14
15.04.2012, 15:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2012, 15:34
Помогаю со студенческими работами здесь

Нахождение последнего элемента и перестановка его перед первым (списки)
Добрый всем вечер. У меня возник вопрос. Я написала программу, которая вводит список и выводит. Но...

По позиции последнего вхождения заданной подстроки S в строку. По части строки, расположенной между первым вхо
Парни помогите,кто знает такое. Разработайте классы для решения предложенной задачи . При...

В файле input.txt задан текст. Распечатать его по предложениям, начиная с последнего и кончая первым
var a:array of string; p:array of string; s,str:string; i,j,n,z1,z,k,r:integer; ...

Для каждого Ai, начиная с последнего и заканчивая первым, вывести его квадратный корень не менее чем с четырьмя знаками
задача звучит так "Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018),...

Наследование классов, использование методов
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Наследование классов и использование конструкторов
Привет всем. У меня есть код, который нужно дополнить. class Skript { public: ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru