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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
#1

friend не видит приватные поля - C++

27.08.2011, 17:33. Просмотров 1047. Ответов 3
Метки нет (Все метки)

Всем привет.
Возникла проблема. Есть такой header
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <windowsx.h>
 
class Intercept;
class Dot
{   
    private:
        FLOAT X,Y,Z;
    public:
        Dot(FLOAT, FLOAT, FLOAT);
        ~Dot(){};       //default destructor
        Dot operator-(const Dot&) const;
        friend static FLOAT Intercept::scalarProduct(const Dot&, const Dot&);
                ...
};
 
class Intercept
{
public:
    inline static FLOAT scalarProduct(const Dot&, const Dot&);
        ...
};
В .cpp пишу:
C++
1
2
3
4
5
6
7
8
9
#include "Intercept.h"
#include <math.h>
 
inline Dot Intercept::vectorProduct(const Dot& A, const Dot& B)
{
    return Dot(A.X * B.Z - A.Z * B.Y, A.Z * B.X - A.X * B.Z, A.X * B.Y - A.Y * B.X);
}
 
...
Компилятор выдаёт следующие ошибки:
При объявлении friend-функции в классе Dot: " error C2027: use of undefined type 'Intercept' ", хотя я сделал предварительное объявление класса Intercept.
В теле метода Intercept::vectorProduct(...): " error C2248: 'Dot::X' : cannot access private member declared in class 'Dot' ".
Ну и до кучи им вторит IntelliSense: " IntelliSense: member "Dot::Z" is inaccessible "
И такие ошибки для всех трёх полей (X, Y и Z) класса Dot.
Что не так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 17:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос friend не видит приватные поля (C++):

Как заполнить приватные поля класса? - C++
Всем привет. В классах новичок вообще зеленый. Помогите плиз маленько разобраться. Хочу сделать класс, чтобы парсить строки. Делал так: ...

Перегрузка операторов, friend или нет friend? - C++
Всем здравствуйте. Есть такой вопрос: при перегрузке операторов в классе(пусть будут + и = (вообще неважно, за исключением потока)) как и...

Описать структуру FRIEND, содержащую след. поля: Имя, Номер телефона, Дата рождения. С++ - C++
Доброго времени суток, будьте добры, помогите решить задачу. Формулировка: Описать структуру FRIEND, содержащую следующие поля: -Имя...

Friend для friend - C++
всем доброго времени суток, покажу проблему на примере: Class B; class A{ int F; friend B; public: A(){F=0;}; };

приватные свойства - C++
Здравствуйте уважаемые форумчане, не так давно начал собственносильно изучать С++. Подскажите мне темному если определен класс class...

глючит ли VS08?видны приватные члены - C++
у меня классе в приватах есть член а скажем..в меине когда пишу объект. - открывается меню с членами и методами и в меню виден член...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.08.2011, 17:35 #2
Предварительное объявление работает только для создания указателей и ссылок. ОБращаться к методам и полям класса нельзя. Они ещё не известны.
1
LosAngeles
Заблокирован
27.08.2011, 17:36 #3
в заголовочный файл её перенеси
0
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
27.08.2011, 17:54  [ТС] #4
Понятно, спасибо. Поменяю местами классы Dot и Intercept
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 17:54
Привет! Вот еще темы с ответами:

Friend класса - C++
#include &lt;iostream&gt; class assoc { struct pair { char* name; int val; }; int free;

Friend Function - C++
Я не очень понимаю как пользаватса Friend функцыей Class.h #include &lt;stdio.h&gt; #include &quot;iostream&quot; using namespace std; ...

Не работает friend - C++
#ifndef INTEGERLONGS_HPP_INCLUDED #define INTEGERLONGS_HPP_INCLUDED...

Friend-функции - C++
из теории ясно, что friend функция — это функция, которая не является членом класса, но имеет доступ к членам класса, объявленным в полях...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.08.2011, 17:54
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru