Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
_nebo
0 / 0 / 1
Регистрация: 02.12.2009
Сообщений: 50
1

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе

09.10.2012, 14:44. Просмотров 880. Ответов 8
Метки нет (Все метки)

У меня есть основной класс с названием Root один из его членов наследует дочерний класс SubRoot. Скажите как объявить, что бы один из элементов класса Root (например просто переменная) был виден в дочернем классе.

Root.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
 
 
class Root
{
public:
    Root(void);
    ~Root(void);
    bool Get();
 
    SubRoot Sub;
 
    int Size; //переменная которую нужно использовать в SubRoot
    
};
SubRoot.h
C++
1
2
3
4
5
6
7
8
9
#pragma once
 
class SubRoot
{
public:
    SubRoot(void);
    ~SubRoot(void);
    bool Set();
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 14:44
Ответы с готовыми решениями:

Можно ли как-то в дочернем классе получить указатель родителя?
У меня тут появилась мыслишка :D В любом классе есть так сказать скрытый...

Ошибка в дочернем классе
Не могу найти ошибку в дочернем классе, возможно не правильно написать main...

Как присвоить значение одного объекта в метод вызванный другим объектом, при том что они в одном классе
Здравствуйте, суть задания такова, создать конструктор без параметра который...

Перегрузка fstream в дочернем классе
h class Child:public StudentsBD{ friend fstream &operator<<( fstream& ,...

Переопределенные операторы в дочернем классе
Всем привет! В общем, столкнулся с проблемой. У меня есть базовый класс в...

8
doctor_lecter
283 / 156 / 30
Регистрация: 22.09.2012
Сообщений: 283
09.10.2012, 15:05 2
в вашем примере нет наследования:
C++
1
2
3
4
5
6
7
8
class Root {
// описание свойств и методов
};
 
class SubRoot: public Root {
// описание свойств и методов
// Теперь классу SubRoot доступны protected и private свойства и методы класса Root
};
Добавлено через 11 минут
Цитата Сообщение от doctor_lecter Посмотреть сообщение
// Теперь классу SubRoot доступны protected и private свойства и методы класса Root
Тут вместо private public
0
_nebo
0 / 0 / 1
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:12  [ТС] 3
У меня явно не хватает знаний по ООП.
Мне как бы не это нужно... Предполагалось что будет много классов типа SubRoot1 ... SubRoot10. Они будут доступны из основного класса Root.

MyRoot.SubRoot3.Set();

Но что бы из подклассов были доступны нужные переменные.
0
doctor_lecter
283 / 156 / 30
Регистрация: 22.09.2012
Сообщений: 283
09.10.2012, 15:22 4
В таком случае в классе Root должен быть указатель на SubRoot, в SubRoot указатель на Root
C++
1
2
3
4
5
6
7
8
9
class Root {
public:
    SubRoot* sub;
};
 
class SubRoot {
public:
    Root* root;
};
И доступ к Root из Subroot
C++
1
2
SubRoot sr;
sr->root->Size;
0
_nebo
0 / 0 / 1
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:45  [ТС] 5
не выходит так (
0
doctor_lecter
283 / 156 / 30
Регистрация: 22.09.2012
Сообщений: 283
09.10.2012, 17:03 6
root.h
C++
1
2
3
4
5
6
7
class SubRoot;
 
class Root {
public:
    SubRoot* subRoot;
    int size;
};
subroot.h
C++
1
2
3
4
5
6
class Root;
 
class SubRoot {
public:
    Root* root;
};
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "root.h"
#include "subroot.h"
#include <iostream>
 
int main() {
    Root root;
    SubRoot subRoot;
    root.subRoot = &subRoot;
    subRoot.root = &root;
    root.size = 10;
    std::cout << subRoot.root->size << std::endl;
}
1
_nebo
0 / 0 / 1
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 18:37  [ТС] 7
Я прошу прошения если я непонятно выразился. Нужно немного не то...
Планировалось чтоб в мейне можно работать было только с Root а в его теле работа с SubRoot
C++
1
2
3
4
5
6
int main() {
    Root root; //срабатывает конструктор Root 
    root.SubRoot.Set(); //при обращении к элементу класса конструктор SubRoot вызывается а потом функция Set()
   ...
 
}
Конструктор Root инициализирует некоторые переменные с которыми будут работать его члены тоесть под класс SubRoot или как его назвать.. Дайте что ли название литературы которую почитать. Я в истерике (
0
Toshkarik
1150 / 867 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
09.10.2012, 18:59 8
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
class SubRoot {
 public:
   SubRoot( int *ptr )
      : sizePtr( ptr )
   {
   
   }
   
   void set( const int newSize ) {
      *sizePtr = newSize;
   }
 private:
   int *sizePtr;
};
 
class Root {
 public:
   Root( const int newSize = 0 )
      : size( newSize  ),
        sub( &size )
   {
   
   }
 
 private:
   int size;
   SubRoot sub;
};
Это имели ввиду? Только для чего это?
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
09.10.2012, 21:05 9
_nebo, переменные в классах не опеределяются, класс - это категория, а её экземпляры валяются в функциях, пространствах имён и в самой программе.
0
09.10.2012, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2012, 21:05

Изменение информации в дочернем классе, через ссылку
Подскажите, есть класс class Class1 В конструкторе я создаю структуру,...

Не могу в дочернем классе вызвать protected метод
Всем привет! Начал писать одну программку, и столкнулся со следующей проблемой:...

Использование переменных базового класса в дочернем классе
Доброго времени суток. Подскажите пожалуйста как в классе SumbString работать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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