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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
#1

Родительский и дочерний класс - C++

26.07.2013, 19:30. Просмотров 1433. Ответов 20
Метки нет (Все метки)

Всем доброго времени суток. Возникла проблема;
C++
1
2
3
4
5
//file Base.h
#include "Children.h"
class Base {
public: Children* a;
}
C++
1
2
3
4
5
//file Children.h
#include "Base.h"
class Children: public Base {
...
}
Пишет: 'Children' does not name a type
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 19:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Родительский и дочерний класс (C++):

Родительский и дочерний процесс - C++
Для начала код. ProcessA#include <windows.h> #include <iostream> #include <stdio.h> int main() { STARTUPINFO si;...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

Используя родительский класс - C++
Используя родительский класс «РАБОЧИЙ» породить производный класс «ДИРЕКТОР». Используя классы «ФИРМА» и «ДИРЕКТОР», описать класс...

ошибки с указателем на родительский класс - C++
задание: сделать 3 класса: список, стек(списком), очередь(списком). Методы: вывод, добавление, удаление. Использовать при обращении...

Передача объекта-наследника по r-value ссылке на родительский класс - C++
Здоровеньки булы. Собственно, код: class x { protected: int a; public: x() {} x(int i) : a(i) {} x(const x&...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.07.2013, 13:06 #16

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что за наезды? Ты вот не помнишь, а мне вот и не в своём коде, а очень даже в чужом коде всегда не лень посмотреть, какие конкретно зависимости нужны в срр файле.
такая куйня никому не нужна в продакшн коде



Добавлено через 20 секунд

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Я уж не хочу повторять о том, что хранить в Base указатели на каких-то Children выглядит полным бредом.
с этим согласен



Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Заголовки должны быть заголовками. И каждый раз делая инклюд нужно чётко представлять, как будет выглядеть итоговый срр файл после препроцессора.
а теперь представь себе это на уровне проекта типа ГНУ/Линукс...а ну ты ж не уважаешь линукс...
ну тогда представь себе это на уровне вебкита или vlc или любой другой популярной программы/двигла/чего-угодно, где количество строк кода исчисляется миллионами.
иначе как хеллоувордным такой подход назвать нельзя, без обид.

0
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
27.07.2013, 15:05  [ТС] #17
Ну теперь работает, только появилась другая проблема;
Кликните здесь для просмотра всего текста

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
// base.h
#ifndef BASE_H
#define BASE_H
 
class Children;
 
class Base {
public: 
    Children* a;
ListView* pList;
    void UpdateList(void);
 
};
 
#endif
 
//file Children.h
#ifndef CHILDREN_H
#define CHILDREN_H
 
#include "Base.h"
 
class Children: public Base {
void GO(void);
...
};
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
//file base.cpp
Base::Base() {}
Base::UpdateList(void) {
pList->Update();
}
...
//какятофункци {
pList = new ListView();
a->GO();
}
C++
1
2
3
4
5
//file Children.cpp
Children::GO(void) {
...
Base::UpdateList();
}


В общем крашится при попытке обновления. Насколько я понял Base::UpdateView() создает новый экземпляр класса Base?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
27.07.2013, 15:25 #18
Я ещё раз обращаю твоё внимание на неверную иерархию классов.
Наследование означает, что каждый экземпляр класса Children будет являться ещё и экземпляром базового.
То есть каждому из детей можно будет сделать UpdateList.
Ты уверен, что тебе это нужно?
Вообще говоря, наследование не следует использовать вместо агрегации, если его возможно ею заменить!

Короче, опиши подробно задачу и я скажу, почему тут не нужна такая конструкция!
0
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
27.07.2013, 16:06  [ТС] #19
В общем так. Есть два класса( Form и Downloader). В Downloader все, что связано с загрузкой данной из нета, а Form собственно сама форма. В этой форме есть список.

Я нажимаю например кнопку на форме. Вызывается функция загрузки из класса Downloader. Эта функция делает n-oe количество одинаковых действий и после каждого действие она должна обновить список на форме. И вот как по нормальному сделать я хз. Я же рак в с++=)
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.07.2013, 16:11 #20
paladinama, гуглите callback
0
paladinama
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 21
28.07.2013, 00:01  [ТС] #21
Ну и как его запихнуть ко мне?
Допустим в классе form
C++
1
2
3
4
... abc() {
  Downloader a;
  a.GO();
}
а в классу Downloade
C++
1
2
3
4
5
6
...GO() {
 for (int i = 1; i<10; i++) {
   //do something
   и вот тут надо вызвать функцию обновления из класса Form
 } 
}
Добавлено через 7 часов 42 минуты
Ну или на будущее скажите, как сделать двунаправленное взаимодействие между двумя классами.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2013, 00:01
Привет! Вот еще темы с ответами:

Создать иерархию классов: родительский класс "Транспорт", класс-потомок "Техосмотр транспорта" - C++
Помогите пожалуйста написать программу Родительский класс &quot;Транспорт&quot;. Поля класса: тип транспорта, гос.номер, марка, Ф.И.О владельца,...

Родительский класс неявно влияет на значение переменной наследника - C++
Написал элементарную программу на тему наследования: есть родительский класс, у которого есть 2 наследника. У наследников есть свои...

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

Реализовать связь классов "телефонная книга" и родительский класс "телефонный номер" - C++
Суть проблемы:есть дочерний класс &quot;телефонная книга&quot; и родительский класс &quot;телефонный номер&quot;. В классе &quot;телефонная книга&quot; к заданной...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.07.2013, 00:01
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru