Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с атрибутами класса 
:(
    Опции темы
MystDeim
Дата 20.12.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Есть 2 класса:
Memory и Kernel

Код

class Memory {
        public:
                Memory();
                Kernel K;
                int getfree();
                int free;
};


Подскажите, как можно получить доступ к объекту Memory из Kernel.

Это сообщение отредактировал(а) MystDeim - 20.12.2007, 17:38
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
zkv
Дата 20.12.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(MystDeim @  20.12.2007,  17:32 Найти цитируемый пост)
Подскажите, как можно получить доступ к объекту Memory из Kernel. 

можно передавать ссылку на Memory при создании объекта Kernel. 
но я на вашем месте постарался бы избегать таких конструкций.
PM MAIL   Вверх
MystDeim
Дата 20.12.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Напишите, пожалуйста код, уже час над этим мучаюсь, насчёт задание, так требуется сделать в лабах!
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Alek86
Дата 20.12.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



типа того

Код


class Memory;      // объявление класса

class Kernel {
  public:
    Kernel(Memory* p_mem) : mp_mem(p_mem) {}
// ...
  private:
    Memory * mp_mem; // указатель на того, кто этот класс содержит
};

class Memory {
   public:
     Memory() : K(this) {}
     Kernel K;
     int getfree();
     int free;
};



возможны опечатки

Это сообщение отредактировал(а) Alek86 - 20.12.2007, 18:21


--------------------
user posted image    user posted image
PM MAIL   Вверх
MystDeim
Дата 20.12.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



кучу ошибок выдаёт :(
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Alek86
Дата 20.12.2007, 18:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



какие и где?


--------------------
user posted image    user posted image
PM MAIL   Вверх
MystDeim
Дата 20.12.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Извиняюсь, если пишу как вы мне подсказали, всё работает без ошибок.

Но у меня будет свой конструктор.
Я пишу так 
Код

class Kernel {
        public:
                Kernel(Memory* p_mem) : mp_mem(p_mem);
                bool startProcess(int size);
                bool killProcess(Process *p);
        private:
                int kid;
                int table;
                Memory * mp_mem;
};
Kernel::Kernel(Memory* p_mem) {
        kid = 0;
        table = 0;
}




Это сообщение отредактировал(а) MystDeim - 20.12.2007, 19:45

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  1.jpg 45,69 Kb
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Alek86
Дата 20.12.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Код
Kernel(Memory* p_mem) : mp_mem(p_mem);
 так нельзя

Код
: mp_mem(p_mem)
 - деталь реализации


Код

class Kernel {
        public:
                Kernel(Memory* p_mem);
                bool startProcess(int size);
                bool killProcess(Process *p);
        private:
                int kid;
                int table;
                Memory * mp_mem;
};
Kernel::Kernel(Memory* p_mem)  : mp_mem(p_mem){
        kid = 0;
        table = 0;

}



--------------------
user posted image    user posted image
PM MAIL   Вверх
MystDeim
Дата 20.12.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Спасибо, теперь ошибок нет!

Код

: mp_mem(p_mem)


Честно говоря, не понимаю что это такое, не подскажешь материала, в своей книжке не нашел такой конструкции.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
nickless
Дата 20.12.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Цитата(MystDeim @  20.12.2007,  19:32 Найти цитируемый пост)
Честно говоря, не понимаю что это такое, не подскажешь материала, в своей книжке не нашел такой конструкции. 

Это список инициализации


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
MystDeim
Дата 20.12.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Спасибо, что помогли!
Надеюсь к понедельнику допишу лабы! smile
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
MystDeim
Дата 21.12.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Чтобы не создавать новую тему спрошу здесь.

Код

class Dispatcher {
        public:
                Dispatcher();
                Memory M;
                Device Dev();
                Controller C(&M);
};
class Controller {
        public:
                Controller(Memory *M);
                void manage(int prer);
        private:
                int prer;
                Memory *M;

};
Dispatcher D;


При попытки обратится к этой функции

Код

        D.C.manage(500);


Пишет ошибку, не пойму в чём дело :(
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Fazil6
Дата 21.12.2007, 18:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(MystDeim @  21.12.2007,  17:33 Найти цитируемый пост)
Пишет ошибку, не пойму в чём дело :(

можешь впадать в отчаяние... 
PM MAIL   Вверх
Alek86
Дата 21.12.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Fazil6, добрый совет smile


MystDeim, что это?
Код

Controller C(&M);


лучше не в отчаяние впадай, а почитай книжку про классы.


--------------------
user posted image    user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.