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

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

Восстановить пароль Регистрация
 
_nebo
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 14:44     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе #1
У меня есть основной класс с названием 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();
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 14:44     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
Посмотрите здесь:

Не могу в дочернем классе вызвать protected метод C++
Обьявить в классе 2 символьные ЗАКРЫТЫЕ переменные, вывести их значения на печать C++
C++ R6025 pure virtual function call при вызове метода, реализованного в дочернем классе
Можно ли как-то в дочернем классе получить указатель родителя? C++
C++ Ошибка в дочернем классе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 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
_nebo
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:12  [ТС]     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе #3
У меня явно не хватает знаний по ООП.
Мне как бы не это нужно... Предполагалось что будет много классов типа SubRoot1 ... SubRoot10. Они будут доступны из основного класса Root.

MyRoot.SubRoot3.Set();

Но что бы из подклассов были доступны нужные переменные.
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 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;
_nebo
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:45  [ТС]     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе #5
не выходит так (
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 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;
}
_nebo
0 / 0 / 0
Регистрация: 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 или как его назвать.. Дайте что ли название литературы которую почитать. Я в истерике (
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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;
};
Это имели ввиду? Только для чего это?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2012, 21:05     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
Еще ссылки по теме:

C++ Что объявить в классе-контейнере, чтобы его можно было перебирать поэлементно
C++ Перегрузка fstream в дочернем классе
Изменение информации в дочернем классе, через ссылку C++

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
09.10.2012, 21:05     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе #9
_nebo, переменные в классах не опеределяются, класс - это категория, а её экземпляры валяются в функциях, пространствах имён и в самой программе.
Yandex
Объявления
09.10.2012, 21:05     Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
Ответ Создать тему
Опции темы

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