Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/83: Рейтинг темы: голосов - 83, средняя оценка - 4.65
3 / 3 / 2
Регистрация: 16.11.2010
Сообщений: 165
1

Вложенные классы!!

08.04.2011, 21:13. Показов 15542. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
НЕ могу разобраться ка это работает!!! приведите пожалуйста простой пример как это работает с реализацией класса
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2011, 21:13
Ответы с готовыми решениями:

вложенные классы
Здорова господа! Снова мучаю класс String еще не замучал. Не могу скомпилировать программу с...

Вложенные классы
Как обратится к приватному полю класса(Builder), из вложенных в этот класс(Builder) классов...

Вложенные классы
class A { private: B b_class; int a; public: A(); }; class B

Вложенные классы
Где можно почитать нормальную информацию о них? Читаю книгу С.Праты там непонятно что(привел внизу...

6
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.04.2011, 21:38 2
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
 
class A
{
 
private:
   class B
   {
   private:
      int b;
   public:
      B()
      {
         b = 5;
      }
      int getB()
      {
         return b;
      }
      void setB(int b)
      {
         this->b = b;
      }
   };
   int a;
   B* b;
public:
   A()
   {
      a = 10;
      b = new B();
   }
   ~A()
   {
      delete b;
   }
   int getA()
   {
      return a;
   }
   void setA(int a)
   {
      this->a = a;
   }
   int getB()
   {
      return b->getB();
   }
   void setB(int b)
   {
      this->b->setB(b);
   }
 
};
int main()
{
   A* a = new A();
   std::cout<<"a = "<<a->getA()<<std::endl;
   std::cout<<"a.b = "<<a->getB()<<std::endl;
   a->setA(15);
   a->setB(25);
   std::cout<<"a = "<<a->getA()<<std::endl;
   std::cout<<"a.b = "<<a->getB()<<std::endl;
   delete a;
   return 0;
}
1
3 / 3 / 2
Регистрация: 16.11.2010
Сообщений: 165
08.04.2011, 21:41  [ТС] 3
this-> а это такое??
И еще забыл спросить, как мне сделать это все так что бы классы были френдовыми?
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,689
08.04.2011, 21:49 4
Цитата Сообщение от 2008kedr2008 Посмотреть сообщение
this-> а это такое??
текуший объект класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
class a
{
public:
int GetValue(){return this->d;};
private:
int d;
}
 
A a;
A b;
a.GetValue(); // здесь this будет a
b.GetValue();  // здесь this будет b
Добавлено через 2 минуты
Цитата Сообщение от M128K145 Посмотреть сообщение
void setB(int b)
{
this->b = b;
}
в данной записи введен чтобы не попутать аргумент и член класса
можно так
C++
1
2
3
4
void setB(int _b)
 {
 b = _b;
 }
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
07.06.2011, 23:09 5
Дабы не мутить новую тему, скажите, а как вызвать конструктор класса B, учитывая, что он приватный? Конструктор объекта класса A я знаю как вызвать, A(); вот аналогичное для B хотелось бы.

Ну или на крайняк объявить B public, но всё-ж таки хотелось бы не просто B (); а чтобы в вызове конструктора B участвовал и объект класса A (последнее условие нужно для понятного интерфейса)
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
07.03.2013, 02:43 6
Похоже, только так:
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
#include <iostream>
#include <stdio.h>
 
class A
{
 
public:
   class B
   {
      public:
      B()
      {
      }
   };
 
public:
   A()
   {
   }
};
int main()
{
   A::B();
   getchar ();
   return 0;
}
0
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 1
24.04.2016, 07:14 7
Добрый день!
Чтобы не создавать новую тему, помогите, пожалуйста, разобраться на примере приведенном в сообщении #2 (пользователя M128K145) с такой проблемой:
Как из вложенного класса получить значение переменной внешнего класса, т.е. в строке 22 вышеприведенного примера получить что-то типа:
C++
1
         this->b = b +A::getA(); // Как во вложенном классе использовать значение переменной внешнего класса?
Т.е. приведу весь код:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
 
class A
{
 
private:
   class B
   {
   private:
      int b;
   public:
      B()
      {
         b = 5;
      }
      int getB()
      {
         return b;
      }
      void setB(int b)
      {
         this->b = b +A::getA(); // Как во вложенном классе использовать значение переменной внешнего класса?
      }
   };
   int a;
   B* b;
public:
   A()
   {
      a = 10;
      b = new B();
   }
   ~A()
   {
      delete b;
   }
   int getA()
   {
      return a;
   }
   void setA(int a)
   {
      this->a = a;
   }
   int getB()
   {
      return b->getB();
   }
   void setB(int b)
   {
      this->b->setB(b);
   }
 
};
int main()
{
   A* a = new A();
   std::cout<<"a = "<<a->getA()<<std::endl;
   std::cout<<"a.b = "<<a->getB()<<std::endl;
   a->setA(15);
   a->setB(25);
   std::cout<<"a = "<<a->getA()<<std::endl;
   std::cout<<"a.b = "<<a->getB()<<std::endl;
   delete a;
   return 0;
}
0
24.04.2016, 07:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2016, 07:14
Помогаю со студенческими работами здесь

Вложенные в друг друга классы
Есть исходный код: class1.h #pragma once #include &quot;class2.h&quot; class class1 { private:...

Перегрузка операция + вложенные классы
Уже второй раз прошу помощи, никто толком не может помочь( Как правильно реализовать операцию...

Шаблоны и вложенные классы - синтаксис
Пишу класс бинарного красно черного дерева, решил сделать структуру узла в нем вложенной, но...

Вложенные классы. Что за синтаксис такой?
Всем привет! Писал код с вложенным классом, столкнулся с таким синтаксисом: template &lt;typename...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru