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

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

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

Студворк — интернет-сервис помощи студентам
НЕ могу разобраться ка это работает!!! приведите пожалуйста простой пример как это работает с реализацией класса
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2011, 21:13
Ответы с готовыми решениями:

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

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

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

6
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.04.2011, 21:38
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  [ТС]
this-> а это такое??
И еще забыл спросить, как мне сделать это все так что бы классы были френдовыми?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
08.04.2011, 21:49
Цитата Сообщение от 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
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,701
07.06.2011, 23:09
Дабы не мутить новую тему, скажите, а как вызвать конструктор класса B, учитывая, что он приватный? Конструктор объекта класса A я знаю как вызвать, A(); вот аналогичное для B хотелось бы.

Ну или на крайняк объявить B public, но всё-ж таки хотелось бы не просто B (); а чтобы в вызове конструктора B участвовал и объект класса A (последнее условие нужно для понятного интерфейса)
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,701
07.03.2013, 02:43
Похоже, только так:
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
Добрый день!
Чтобы не создавать новую тему, помогите, пожалуйста, разобраться на примере приведенном в сообщении #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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2016, 07:14
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru