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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите с компилятором http://www.cyberforum.ru/cpp-beginners/thread345857.html
Вечер добрый... Помогите советом. Не могу скопилировать программу. Использую для этого Dev C++. Когда пробую компилировать, выходит куча ошибок. Мол не найдены такие то сякие библиотеки и так далее.. Как можно решить эту проблему? Может использовать какой нибудь другой компилятор? Чем пользуются профессионалы?
C++ Описание двух "пересекающихся" классов Как сделать два класса в которых методы используют параметры с типами друг-друга class c1 { public: int param; int method(c2 param); }; class c2 { public: int param; int method(c1 param) { return param.param; } http://www.cyberforum.ru/cpp-beginners/thread345849.html
Как правильно? C++
Совершать итерацию, по куску памяти выделенному в куче? например int* t = new int ; Как перемещаться. С каким шагом? Или struct S { int a;
C++ Текст из одного файла перенести в другой текстовый файл
текст из одного файла перенести в другой текстовый файл, кто может напишите листинг программы чтоб выполняло это условие заранее спасибо
C++ Непонятная рекурсия http://www.cyberforum.ru/cpp-beginners/thread345827.html
Привет всем! нужна небольшая помощь в разьяснении кода. Дано задание составить прогу: y=3+6+9+..3*N - составить программу через рекурсию. Дали исходный код, он работает. Но хотелось бы понять точную мысль его работы. Почему он написан именно так, и можно ли написать как-то по другому. ... #include <stdio.h> #include <conio.h> #include <math.h> float function(int n)
C++ Залипание клавишы мыши при генерации прерывания Собственно в чем проблема=) Пишу программу для курсовой под Borland C++ 3.11. Как известно под досом для подключения мыши необходимо генерировать 33 прерывание. Все писал под ос ХР. Препод потребовал все проге ему сдавать через программу эмуляции доса DosBox. Вот тут и начались мои проблемы. При первой компиляции программы полёт нормальный, все работает, но при последующих начинается залипание... подробнее

Показать сообщение отдельно
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67

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

27.08.2011, 17:33. Просмотров 1039. Ответов 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.
Что не так?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru