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

Не работает дружественность классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Система нелинейных уравнений методом секущих и касательных http://www.cyberforum.ru/cpp-beginners/thread593845.html
Система нелинейных уравнений методом секущих и система нелинейных уравнений методом касательных. Есть у кого-нибудь коды. Буду благодарна Вам! Добавлено через 3 минуты Я просто новенькая в с++...
C++ Метод Гауса системы линейных уравнений: разбор кода #include <vcl.h> #include <conio.h> #include <stdio.h> #include <math.h> int obr(int N,double *A) { int i,j,ii,J,k,jj,t=1; double *ish_matr,*obrmatr=NULL,*y, *r,*matr,*b,*prv; double par,sum;... http://www.cyberforum.ru/cpp-beginners/thread593834.html
Структуры в С++. Определить, есть ли информация в записной книжке. C++
7. В записной книжке указаны фамилии и номера телефонов 10 человек. Определить, есть ли в записной книжке информация о человеке с заданным номером телефона, и, если есть, вывести фамилию этого...
C++ Ctrl+Z в консоли
Нужно написать примерно такое дело: чтобы консольное приложение на C++ при нажатии сочетания клавиш Ctrl+Z делало определённые действия (по условию - отмена последнего действия). Мне это надо просто...
C++ WinAPI функции http://www.cyberforum.ru/cpp-beginners/thread593804.html
как получит id текущего процесса?
C++ ищу программу для направленного древовидного поиска для задачи о р-медиане может кто знает где найти такую программу,язык программирования любой подробнее

Показать сообщение отдельно
monnzz
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 34

Не работает дружественность классов - C++

01.06.2012, 23:50. Просмотров 592. Ответов 4
Метки (Все метки)

Всем привет, столкнулся с проблемой, не работает дружественность, объявляю вроде все правильно, но что-то идет не так, помогите кто сможет, пожалуйста

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
 #include "stdafx.h"
 #include <iostream>
 using namespace std;
 
 class Cat 
 {
 public:
 friend class Dog; !!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Cat () {}
 ~Cat () {}
 void SetAge (int age) { itsAge = age; }
 int GetAge () const { return itsAge; }
 private:
 int itsAge;
 };
 
 class Dog
 {
 public:
 friend class Cat; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 Dog (int weight) {itsWeight = weight; }
 ~Dog () {}
 int CatAge () const { return itsAge; } !!!!!!!!!!!!! (внимание на itsAge)
 int GetWeight () const { return itsWeight; }
 private:
 int itsWeight;
 };
 
 int main ()
 {
 Cat Barsik;
 Barsik.SetAge (10);
 Dog Frisky (134);
 cout << Frisky.CatAge ();
 cout << Barsik.GetWeight ();
 char response;
 cin >> response;
 return 0;
 }
Программа чисто для понимания сути, специально объявил перекрестную дружественность, понимаю, что объявление в классе Дог другом класса Кэт и не должно работать, но вот почему не работает первый вариант, где я в классе Кэт объявляю дружественным класс Дог ( нужные строки я отметил восклицательными знаками, чтоб проще было их найти)

Ошибки появляются следующие, в классе Дог функция int CatAge () const { return itsAge; } пишет, что индетификатор itsAge неопределен, хотя раз класс объявлен дружественным данные-члены должны быть доступны для методов-членов

так же еще ошибка cout << Barsik.GetWeight (); но здесь в целом и не должно ничего работать, это я от безвыходности попробовал((

использую среду ВизуалСтудио 2010
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru