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

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

09.10.2012, 14:44. Показов 2354. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2012, 14:44
Ответы с готовыми решениями:

Допустил простую ошибку, как обьявить переменную в классе.
Вот часть кода: <?php class dbQueryes { private $host = 'localhost'; private $user = 'root'; private $pass = ''; ...

Как присвоить данные родителю в дочернем классе?
Решая одну задачу натолкнулся на проблему. У меня есть объект у которого есть List реализаторов, то есть именно эти реализаторы работают с...

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

8
 Аватар для doctor_lecter
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
09.10.2012, 15:05
в вашем примере нет наследования:
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
1 / 1 / 1
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:12  [ТС]
У меня явно не хватает знаний по ООП.
Мне как бы не это нужно... Предполагалось что будет много классов типа SubRoot1 ... SubRoot10. Они будут доступны из основного класса Root.

MyRoot.SubRoot3.Set();

Но что бы из подклассов были доступны нужные переменные.
0
 Аватар для doctor_lecter
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
09.10.2012, 15:22
В таком случае в классе 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
1 / 1 / 1
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:45  [ТС]
не выходит так (
0
 Аватар для doctor_lecter
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
09.10.2012, 17:03
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
1 / 1 / 1
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 18:37  [ТС]
Я прошу прошения если я непонятно выразился. Нужно немного не то...
Планировалось чтоб в мейне можно работать было только с Root а в его теле работа с SubRoot
C++
1
2
3
4
5
6
int main() {
    Root root; //срабатывает конструктор Root 
    root.SubRoot.Set(); //при обращении к элементу класса конструктор SubRoot вызывается а потом функция Set()
   ...
 
}
Конструктор Root инициализирует некоторые переменные с которыми будут работать его члены тоесть под класс SubRoot или как его назвать.. Дайте что ли название литературы которую почитать. Я в истерике (
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
09.10.2012, 18:59
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
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
09.10.2012, 21:05
_nebo, переменные в классах не опеределяются, класс - это категория, а её экземпляры валяются в функциях, пространствах имён и в самой программе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2012, 21:05
Помогаю со студенческими работами здесь

Переменная изменилась в одном классе, куда "воткнуть" код в другом классе
Привет всем, Достало это событийное программирование. :wall: Я не делаю событийные &quot;калькуляторы&quot; и &quot;конвертеры&quot;,...

В одном классе нужно создать массив, а в классе program его вывести. "Не все ветви кода возвращают значение"
В одном классе нужно создать массив, а в классе program его вывести, помогите, как разобраться namespace con { class Array ...

Имеется базовый класс с некоторым событием, как вызвать это событие в дочернем классе?
Братцы, что то я отморозился, помогите разобраться с концепцией... Суть проблемы, имеется базовый класс с некоторым событием, как вызвать...

Ошибка в дочернем классе
class Pc: frequency = &quot;4.0 Ghz&quot; core = &quot;6&quot; ram = &quot;16 GB&quot; ro_memory = &quot;1 Tb&quot; def change_frequency(self,...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru