powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / как получить доступ из композиций класса в другие композиции .
5 сообщений из 30, страница 2 из 2
как получить доступ из композиций класса в другие композиции .
    #40073391
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
andron81...используя только френдовые поля...
нет я говорил о френд-методах, а не "полях".
вариант с friend-методом, прямой доступ к закрытой переменой из другого класса
Код: plaintext
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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
#include <iostream>
class X;

class Y
{
    int y;

public:
    Y(int y1): y(y1) {}
    int getY()
    {
        return y;
    }
    void printXY(X &x);
};

class X
{
    int x;
public:
    X(int x1): x(x1) {}
    // этот ПАБЛИК геттер для второго варианта без friend
    int getX()
    {
        return x;
    }
    friend void Y::printXY(X & x); // для прямого доступа к private 'x' без геттера
};

class MAIN
{
    X x;
    Y y;
public:
    MAIN (int x, int y): x(x),y(y) {}
    void testMAIN()
    {
        y.printXY(x);
    }
};
// реализация printXY вынесена за пределы класса
// вариант - прямой доступ к закрытой переменной из другого класса
void Y::printXY(X & x)
    {
        std::cout << "printXY() x,y = " << x.x << ", " << getY();
    }

int main()
{
    MAIN M(555, 444);
    M.testMAIN();
    return 0;
};


---------
вариант БЕЗ friend-метода, доступ с помощью ГЕТТЕРА
Код: plaintext
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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
#include <iostream>
class X;

class Y
{
    int y;

public:
    Y(int y1): y(y1) {}
    int getY()
    {
        return y;
    }
    void printXY(X &x);
};

class X
{
    int x;
public:
    X(int x1): x(x1) {}
    // этот ПАБЛИК геттер для второго варианта без friend
    int getX()
    {
        return x;
    }
//    friend void Y::printXY(X & x); ЗАКОММЕНТИРОВАН дружественный метод

};

class MAIN
{
    X x;
    Y y;
public:
    MAIN (int x, int y): x(x),y(y) {}
    void testMAIN()
    {
        y.printXY(x);
    }
};
// реализация printXY вынесена за пределы класса
// вариант без friend-метода, с помощью паблик Геттера
void Y::printXY(X & x)
    {
        std::cout << "printXY() x,y = " << x.getX() << ", " << getY();
    }

int main()
{
    MAIN M(555, 444);
    M.testMAIN();
    return 0;
};

как говорится, смотря по какой теме контрольная

нормальный себе способ. по сути похоже на хранение ссылки в композиции поле. с хранением мне нравится больше. ну твой способ имеет право на существование. Спасибо.
...
Рейтинг: 0 / 0
как получить доступ из композиций класса в другие композиции .
    #40073408
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
Не "похоже" совсем а кардинально разное.
Композиция это ООП. А тут хак.
Вы еще добавьте деление на файлы заголовки и пространство имен.
Пример будет более жизненный.
"смотря по какой теме контрольная"))
...
Рейтинг: 0 / 0
как получить доступ из композиций класса в другие композиции .
    #40073409
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

контрольные были последний раз лет так 20 назад )))))
...
Рейтинг: 0 / 0
как получить доступ из композиций класса в другие композиции .
    #40073414
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
Шутка была. Мне понравилась.
...
Рейтинг: 0 / 0
как получить доступ из композиций класса в другие композиции .
    #40073457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы - пожизненные студенты. Так шта приготовтесь к новой контрольной...
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / как получить доступ из композиций класса в другие композиции .
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]