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

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

Восстановить пароль Регистрация
 
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
27.08.2011, 17:33     friend не видит приватные поля #1
Всем привет.
Возникла проблема. Есть такой 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++ глючит ли VS08?видны приватные члены
Friend Function C++
friend function C++
friend function C++
приватные свойства C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.08.2011, 17:35     friend не видит приватные поля #2
Предварительное объявление работает только для создания указателей и ссылок. ОБращаться к методам и полям класса нельзя. Они ещё не известны.
LosAngeles
Заблокирован
27.08.2011, 17:36     friend не видит приватные поля #3
в заголовочный файл её перенеси
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
27.08.2011, 17:54  [ТС]     friend не видит приватные поля #4
Понятно, спасибо. Поменяю местами классы Dot и Intercept
Yandex
Объявления
27.08.2011, 17:54     friend не видит приватные поля
Ответ Создать тему
Опции темы

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