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

Вложенные классы!! - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.60
2008kedr2008
3 / 3 / 0
Регистрация: 16.11.2010
Сообщений: 165
08.04.2011, 21:13     Вложенные классы!! #1
НЕ могу разобраться ка это работает!!! приведите пожалуйста простой пример как это работает с реализацией класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
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;
}
2008kedr2008
3 / 3 / 0
Регистрация: 16.11.2010
Сообщений: 165
08.04.2011, 21:41  [ТС]     Вложенные классы!! #3
this-> а это такое??
И еще забыл спросить, как мне сделать это все так что бы классы были френдовыми?
ValeryS
Модератор
6374 / 4840 / 442
Регистрация: 14.02.2011
Сообщений: 16,043
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;
 }
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
07.06.2011, 23:09     Вложенные классы!! #5
Дабы не мутить новую тему, скажите, а как вызвать конструктор класса B, учитывая, что он приватный? Конструктор объекта класса A я знаю как вызвать, A(); вот аналогичное для B хотелось бы.

Ну или на крайняк объявить B public, но всё-ж таки хотелось бы не просто B (); а чтобы в вызове конструктора B участвовал и объект класса A (последнее условие нужно для понятного интерфейса)
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2016, 07:14     Вложенные классы!!
Еще ссылки по теме:

C++ Вложенные классы
C++ Шаблоны и вложенные классы - синтаксис
Вложенные классы. Что за синтаксис такой? C++

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

Или воспользуйтесь поиском по форуму:
Muso
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;
}
Yandex
Объявления
24.04.2016, 07:14     Вложенные классы!!
Ответ Создать тему
Опции темы

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