Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 30.06.2016
Сообщений: 99

Указатель на дочерний класс

22.03.2018, 14:03. Показов 1054. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Есть класс TSpisok в нём должны быть поля указатели на первый,текущий,последний элемент TElement. Попытался сделать что то наподобие TElement* first,TElement* current, TElement* last. Но тут проблема родительский класс ничего по сути не знает о дочернем.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2018, 14:03
Ответы с готовыми решениями:

Родительский и дочерний класс
Всем доброго времени суток. Возникла проблема; //file Base.h #include "Children.h" class Base { public: Children* a; } //file...

Как передать 2 из 3-х значений конструктора в дочерний класс?
#include <iostream> #include <string> #include "math.h" using namespace std; class Uravnenie //Базовый класс { public: ...

Простое наследование в с++. Базовый класс (AEROFLOT) и дочерний (REIS)
Есть два класса: базовый (AEROFLOT) и дочерний (REIS). При компиляции у меня конструктор по умолчанию базового класса вызывается два раза....

9
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
22.03.2018, 14:14
donimsi09, Перед объявлением класса TSpisok напиши строчку
C++
1
class TElement;
Добавлено через 2 минуты
Твой TSpisok ничего о структуре класса TElement не знает. Но выделить память на указатель (А он всегда 4 байта (или 8)) сможет. Ему важно знать, что такой класс есть.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.03.2018, 14:21
По идее, TElement должен определяться внутри класса TSpisok.
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
#include <iostream>
 
class TSpisok
{
public:
    struct TElement
    {
        void Print(); // просто для примера как определять методы включенного класса
    };
 
    TElement Foo();
 
protected:
    TElement m_elem; // для простоты примера это будет не указатель
};
 
void TSpisok::TElement::Print()
{
    std::cout << "Ololo\n";
}
 
TSpisok::TElement TSpisok::Foo()
{
    return m_elem;
}
 
int main()
{
    TSpisok ts;
    ts.Foo().Print();
}
0
0 / 0 / 1
Регистрация: 30.06.2016
Сообщений: 99
22.03.2018, 16:34  [ТС]
TElement обязательно должен наследоваться от TSpisok, и ещё одни классы TNumber и TString должны наследоваться от TElement. Вот скрины кода.
Миниатюры
Указатель на дочерний класс   Указатель на дочерний класс  
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.03.2018, 16:46
Цитата Сообщение от donimsi09 Посмотреть сообщение
TElement обязательно должен наследоваться от TSpisok
То есть элемент должен являться списком (паблик наследование)?
По мне, так это получается как-то нелогично. Мне кажется, что список должен состоять из элементов (композиция, на крайняк - агрегация).

И почему TSpisok, но TNumber и TString?
Почему не TChislo и TStroka?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.03.2018, 16:47
Цитата Сообщение от donimsi09 Посмотреть сообщение
Вот скрины кода.
 Комментарий модератора 
Запрещено выкладывать код в виде картинок. Перепечатайте его в сообщение, обрамив тегами CPP.
0
0 / 0 / 1
Регистрация: 30.06.2016
Сообщений: 99
22.03.2018, 16:55  [ТС]
Да, вы правы наследование TElement от TSpisok лишнее, мой косяк. Вот текст задания
Кликните здесь для просмотра всего текста

1. Создать класс TSpisok, включающий три поля – указатели на объекты класса TElement:
- указатель на первый элемент;
- указатель на последний элемент;
- указатель на текущий элемент.
Эти указатели используются для организации двусвязного списка.

2. Создать класс TElement, содержащий два поля для указателей на предыдущий и последующий элементы списка.

3. От класса TElement наследуются два класса: класс TNumber_ для организации списка числовых значений и класс TString_ для организации списка строк.

4. Классы TNumber_ и TString_ должны содержать конструкторы.
5. Класс TSpisok должен содержать следующие методы:
- добавление элемента в список;
- удаление элемента из списка;
- вывод списка в прямом и обратном направлении;
- деструктор;
- метод суммирования, выполняющий для объектов класса TNumber_ арифметическое суммирование, а для объектов класса TString_ – конкатенацию через пробел.

6. Реализовать оконный интерфейс для работы со списком. Ввод элементов списка выполняется с помощью компонента TEdit. Отображение списка выполняется с помощью компонента TList. Методы класса TSpisok вызываются с помощью кнопок.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.03.2018, 16:58
Цитата Сообщение от MrGluck Посмотреть сообщение
И почему TSpisok, но TNumber и TString?
Почему не TChislo и TStroka?
Цитата Сообщение от donimsi09 Посмотреть сообщение
Вот текст задания
Понятно, вопрос отпал. Проблемы нашего образования.
0
0 / 0 / 1
Регистрация: 30.06.2016
Сообщений: 99
22.03.2018, 17:56  [ТС]
И что с этим делать К какому решению прибегнуть?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.03.2018, 22:39
Цитата Сообщение от donimsi09 Посмотреть сообщение
К какому решению прибегнуть?
Переделать архитектуру на нормальную. Список не должен наследоваться от элемента. Тогда и проблема ваша отпадёт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2018, 22:39
Помогаю со студенческими работами здесь

Обязан ли дочерний класс реализовать все виртуальные функции отца?
Обязан ли дочерний класс реализовать все виртуальные функции отца? Такой вот вопрос у меня на ум пришел, правильно ли? или я в чем то...

Указатель на указатель, класс группа
помогите пожалуйста не могу понять что со строкой 312 знаю что с указателем что то не то... но исправить не получается //4. В...

Как преобразовать указатель на класс к указателю на асбтрактный класс?
Но тут есть одна тонкость- два промежуточных класса. Вот код, надеюсь всё из него понятно. #include &lt;stdio.h&gt; ...

Класс и указатель
Подскажите как правильно вызвать функцию через указатель Объявить получилось а вот как вызвать не понимаю( #include...

Указатель на класс
сли первый класс определён и он должен использовать указатель на второй(который позже определён) как это сделать


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru