С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
_nebo
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 50
#1

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

09.10.2012, 14:44. Просмотров 791. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе (C++):

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

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

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

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

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

Использование переменных базового класса в дочернем классе - C++
Доброго времени суток. Подскажите пожалуйста как в классе SumbString работать с переменными(string s;int z ; ) класса factory ? Мне...

8
doctor_lecter
280 / 153 / 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
0
_nebo
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:12  [ТС] #3
У меня явно не хватает знаний по ООП.
Мне как бы не это нужно... Предполагалось что будет много классов типа SubRoot1 ... SubRoot10. Они будут доступны из основного класса Root.

MyRoot.SubRoot3.Set();

Но что бы из подклассов были доступны нужные переменные.
0
doctor_lecter
280 / 153 / 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;
0
_nebo
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 50
09.10.2012, 15:45  [ТС] #5
не выходит так (
0
doctor_lecter
280 / 153 / 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;
}
1
_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 или как его назвать.. Дайте что ли название литературы которую почитать. Я в истерике (
0
Toshkarik
1147 / 864 / 51
Регистрация: 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
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
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
Привет! Вот еще темы с ответами:

Обьявить в классе 2 символьные ЗАКРЫТЫЕ переменные, вывести их значения на печать - C++
Уважаемые программисты Прошу помочь.:help: так как эту тему я не понял . Задание: Обьявить в классе 2 символьные ЗАКРЫТЫЕ переменные...

Что объявить в классе-контейнере, чтобы его можно было перебирать поэлементно - C++
что и как надо объявить в своем классе-контейнере, чтобы его можно было перебирать поэлементно через цикл на диапазонах? там вроде должны...

Что нужно прописать в классе, чтобы никаким образом невозможно было создать от него объект? - C++
Добрый день. Задача: создать &quot;статический класс&quot;. Подстажите, плз, что нужно прописать в классе, чтобы никаким образом невозможно было...

Как объявить переменную в классе? - C++
Доброго времени суток. Как правильно объявить переменную в private: Делаю так: private: std::vector&lt;double&gt;* parameters = new...


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

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

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