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

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

Войти
Регистрация
Восстановить пароль
 
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
#1

Получение доступа к классу "свыше". - C++

18.11.2011, 23:14. Просмотров 349. Ответов 4
Метки нет (Все метки)

Надо получить доступ к методам класса "А" из экземпляра другого класса, который объявлен внутри класса А. Код в студию :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Group 
{
    Tutor *groupTutor;
    
public:
    Group(string tutorName = "Elena", string tutorSurname = "Stanislavna", unsigned int k = 2) : kolDezh(k){
        groupTutor = new Tutor(tutorName, tutorSurname);
    }
    ~Group();
 
    inline Tutor* getTutor() {return groupTutor;}
 
 
    void changeBusiness ();
    
};
Из groupTutor должен вызываться метод changeBusiness(); Конечно можно сделать метод в Тutor , затем передавать туда ссылку на группу. Но это мне кажется некрасивым.
А вот если создать метод без аргументов мне кажется выходом, но не понимаю как можно построить связь между двумя классами.

Добавлено через 45 минут
Создание указателя на родителя (Group ) в Tutor выход ли ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2011, 23:14     Получение доступа к классу "свыше".
Посмотрите здесь:

Приведение LPVOID к классу "непостоянной" величины - C++
В поток посылаю экземпляр класс : userThread = CreateThread(NULL, NULL, ConnectionShell, (LPVOID)(&userCurrent), NULL, NULL); Где...

Необработанное исключение: "Нарушение прав доступа при чтении" - C++
При выполнении тестов {input...output} появляется необработанное исключение по адресу 0x009577E1 в 1590.exe: 0xC0000005: нарушение прав...

Нарушение прав доступа при записи "0xabababab" - C++
Доброго времени суток начал прогу писать и тут меня компилятор удивил вот такой фигнёй : Необработанное исключение в "0x773d15de" в...

Нарушение прав доступа при записи "0x00000000" - C++
Как я понимаю ошибка где-то в указателях. Но вот что неправильно, мне непонятно. class CAR { private: char *prod; //...

Ошибка "Нарушение прав доступа при записи" - C++
Похоже я полный неудачник по программированию, так как даже элементарные программы у меня отказываются работать с выводом ошибки "Нарушение...

Работа со списками ("Нарушение прав доступа записи") - C++
Пишу первый проект по работе с односвязным списком,в программе прописал класс со структурой "список" и методы которые добавляют полезную...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
19.11.2011, 03:24     Получение доступа к классу "свыше". #2
во-первых, у вас утечка памяти. в классе Group
во-вторых, нарушение инкапсуляции класса Group
в-третьих, нарушение инварианта класса Group

в-четвертых косяк архитектуры. Частное не должно контролировать целое. Оно даже знать не должно о существовании целого.

Но если очень сильно нужно - можно записать в Tutor знание о своём хозяине Group .
Тогда объекты Tutor смогут в определённых ситуациях запускать методы своего хозяина.
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
19.11.2011, 11:41  [ТС]     Получение доступа к классу "свыше". #3
А можно поподробнее про утечку?
Не понятно тогда как сделать правильно, по канону, такой случай : есть группа к ней прикреплен воспитатель и дети в группе. Воспитатель имеет полную власть над детьми (которую он осуществляет через методы группы).
Bers
Заблокирован
19.11.2011, 14:10     Получение доступа к классу "свыше". #4
Цитата Сообщение от KBAC Посмотреть сообщение
groupTutor = new Tutor(tutorName, tutorSurname);
Цитата Сообщение от KBAC Посмотреть сообщение
~Group();

Кто будит освобождать память?

Добавлено через 1 минуту
хотя вообще.. может это я туплю. Тело диструктора то не показанно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 15:33     Получение доступа к классу "свыше".
Еще ссылки по теме:

Нарушение прав доступа при записи "0x0000000c" - C++
12.cpp // 12.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdlib.h> #include...

Что означает "нарушение доступа (ошибка сегментации)" - C++
отладчик выдает : нарушение доступа(ошибка сегментации) что это означает??? в чем суть ошибки???

Ошибка: "Ваша программа вызвала нарушение доступа (ошибку сегментации)" - C++
Доброго времени суток. При выполнении возникает ошибка "Ваша программа вызвала нарушение доступа (ошибку сегментации)", знаний у меня...

Стратегия "получение ресурса есть инициализация" - C++
Здорова! Тут вообщем новую концепцию ООП вычитал "получение ресурса есть инициализация" Вообщем считается когда используешь исключения,...


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

Или воспользуйтесь поиском по форуму:
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
19.11.2011, 15:33  [ТС]     Получение доступа к классу "свыше". #5
Тело действительно в другом файле описано.
Yandex
Объявления
19.11.2011, 15:33     Получение доступа к классу "свыше".
Ответ Создать тему
Опции темы

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