Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2015, 14:51   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Вложенный класс

Всем доброго дня !

Подскажите пожалуйста, почему из функции

Код:
void gfk() const 
		
		{
		    A v(564);
                    printf("\nv = %p\n",&v);
                    printf("\nx = %d\n",v.x);
		}
класса В не могу получить доступ к x следующим образом: v.x

эта же функция фактически находится внутри класса А


Код:
class A

{
	int x;

public:
       
       A(int a = 0) : x(a) {printf("\nKONSTRUKTOR class A this = %p\n",this);}
       ~A()  {printf("\nDESTRUKTOR class A this = %p\n",this);}
	int hgh() const  {return x;}

	class B 
	
	{
		public:

		B()  {printf("\nKONSTRUKTOR class B this = %p\n",this);}
              ~B()  {printf("\nDESTRUKTOR class B this = %p\n",this);}
               void gfk() const 
		
		{
		    A v(564);
                    printf("\nv = %p\n",&v);
                    printf("\nx = %d\n",v.x);
		}
	};
};
RAFA91 вне форума Ответить с цитированием
Старый 29.07.2015, 15:00   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вложена, а не внутри.
очевидно потому что x приватное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.07.2015, 15:24   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

как ни как составляющая класса А
RAFA91 вне форума Ответить с цитированием
Старый 29.07.2015, 17:39   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Какой компилятор и какая ошибка?
У меня все скомпилировалось (MSVC & MinGW).
waleri вне форума Ответить с цитированием
Старый 30.07.2015, 13:00   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Microsoft Visual C++ 6.0

--------------------Configuration: PRAKTIKA_2 - Win32 Debug--------------------
Compiling...
PRAKTIKA_2.CPP
C:\Program Files\Microsoft Visual Studio\MyProjects\PRAKTIKA_6\PRAKTI KA_2.CPP(29) : error C2248: 'x' : cannot access private member declared in class 'A'
C:\Program Files\Microsoft Visual Studio\MyProjects\PRAKTIKA_6\PRAKTI KA_2.CPP(9) : see declaration of 'x'
Error executing cl.exe.

PRAKTIKA_2.exe - 1 error(s), 0 warning(s)


Код:
#include <stdio.h>
#include <conio.h>



class A

{
	int x;

public:
       
       A(int a = 0) : x(a) {printf("\nKONSTRUKTOR class A this = %p\n",this);}
       ~A()  {printf("\nDESTRUKTOR class A this = %p\n",this);}
	int hgh() const  {return x;}

	class B 
	
	{
		public:

		B()  {printf("\nKONSTRUKTOR class B this = %p\n",this);}
              ~B()  {printf("\nDESTRUKTOR class B this = %p\n",this);}
               void gfk() const 
		
		{
		    A v(564);
                    printf("\nv = %p\n",&v);
                    printf("\nx = %d\n",v.x);
		}
	};
};



int main()

{
	A::B b;
	b.gfk();
	
	getch();

	return 0;
}
а тут работает )))

http://ideone.com/BQzBPm

Последний раз редактировалось RAFA91; 30.07.2015 в 13:06.
RAFA91 вне форума Ответить с цитированием
Старый 30.07.2015, 13:18   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
Microsoft Visual C++ 6.0
Забудьте уже об этой древности, компилятор 98 года.
waleri вне форума Ответить с цитированием
Старый 30.07.2015, 13:18   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А вы возьмите Visual C++ 1, там еще дальше от стандарта.
p51x вне форума Ответить с цитированием
Старый 30.07.2015, 13:31   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Забудьте уже об этой древности, компилятор 98 года.
неужели Вы думаете, что мне кто-то позволит менять в институте компилятор ?
RAFA91 вне форума Ответить с цитированием
Старый 30.07.2015, 14:32   #9
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
неужели Вы думаете, что мне кто-то позволит менять в институте компилятор ?
А препод идиот? Сделайте это раздельно, или храните переменные класса A в открытом доступе.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 30.07.2015, 18:41   #10
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
неужели Вы думаете, что мне кто-то позволит менять в институте компилятор ?
А попробуйте предложить преподавателю сменить IDE, например, на современную Visual Studio (есть бесплатные ее варианты, это же не ломаную ставить нужно будет).
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вложенный шаблонный класс mir_zol Общие вопросы C/C++ 3 19.01.2013 02:59
Вложенный класс в шаблон. Указатель на вложенный класс в возвращаемом значении метода шаблона. Что делать? Asya1994 Помощь студентам 3 09.12.2012 01:43
Вложенный запрос GinIvan Помощь студентам 0 27.03.2012 13:01
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Вложенный запрос Ti_pain) SQL, базы данных 2 17.12.2011 16:56