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

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

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

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

27.08.2011, 17:33. Просмотров 1035. Ответов 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.
Что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 17:33     friend не видит приватные поля
Посмотрите здесь:
C++ Как заполнить приватные поля класса?
Перегрузка операторов, friend или нет friend? C++
C++ Описать структуру FRIEND, содержащую след. поля: Имя, Номер телефона, Дата рождения. С++
Friend для friend C++
приватные свойства C++
C++ глючит ли VS08?видны приватные члены
C++ friend классы
C++ Friend-функции
Friend класса C++
Не работает friend C++
friend function C++
Friend Function C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.08.2011, 17:35     friend не видит приватные поля #2
Предварительное объявление работает только для создания указателей и ссылок. ОБращаться к методам и полям класса нельзя. Они ещё не известны.
LosAngeles
Заблокирован
27.08.2011, 17:36     friend не видит приватные поля #3
в заголовочный файл её перенеси
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
27.08.2011, 17:54  [ТС]     friend не видит приватные поля #4
Понятно, спасибо. Поменяю местами классы Dot и Intercept
Yandex
Объявления
27.08.2011, 17:54     friend не видит приватные поля
Ответ Создать тему
Опции темы

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