|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.03.2010, 22:43 | #1 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Вложенность VS наследование - не догоняю
Код:
Код:
в классе Player_class мне надо работать с полями класса Game_class(не статичными, а изменяющимися для данного объекта класса Game_class) прога: Код:
|
12.03.2010, 23:13 | #2 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Код:
|
|
12.03.2010, 23:31 | #3 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Спасибо за оперативный ответ.
Конечно, вариант передавать в конструктор "начальствующий" объект в кач. параметра, я всегда держал в голове. Но блин - придется везде в конструтор класса добавлять параметр. А нет ли какого метода Owner, наследуемого может от самого System.Object, возвращающео ссылку на объект, создавший текущий объект? в моем случае game1.player.Owner являлось бы game1 Или во - мегаВЕСЧЬ: как мне написать интерфейс с методом Creator, кот. будет выполнять поставленную задачу? тогда я тупо укажу, что нужные мне классы юзают этот интерфейс и тогда у всех объектов этих классов появится метод Creator в кранем случае этот метод вернет ссылку на Main() или Form1() или какой-то подобный объект или статичный класс Последний раз редактировалось boris-blade; 12.03.2010 в 23:38. |
13.03.2010, 12:07 | #4 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
возникли траблы
мне необходимо в рамках методов вложенных классов изменять поля нчальствующего объекта, т.е. в нашем примере Method1 должен иметь возможность изменить Round. Я передаю в конструкторы начальствующий объект с параметров ref - среда ругается - говорит Невозвожно передать this с ключевым словом ref/out - он доступен только для чтения |
13.03.2010, 12:36 | #5 | ||
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
правильно говорит.
Код:
Цитата:
Цитата:
Все равно придется писать реализацию для интерфейса в каждом классе. М.б. тогда унаследовать Player_class от некоего базового, в котором будут нужные методы |
||
13.03.2010, 16:13 | #6 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Код:
пишет: System.NullReferenceException не обработано Message="В экземпляре объекта не задана ссылка на объект." проверял this_game - она не null также - надо ли this_game указывать среди полей класса Game_class? я пробовал и так, и эдак - одна фигня |
13.03.2010, 17:30 | #7 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Написал маленький тест. У меня выполняется без ошибок. И, конечно, логичнее сделать полем класса, а не локальной переменной. Но дело даже не в этом. Еще раз: зачем нужна передача по ссылке в данном случае ? И что будет если один из экземпляров Player_class изменит это значение - поменяются владельцы у всего списка player, т.е. классу Player_class доступны изменения, которые он не вправе делать.
// И почему цикл от 1-цы ? Может отсюда NullReference |
16.03.2010, 08:08 | #8 | |
Регистрация: 16.03.2010
Сообщений: 6
|
Цитата:
вообще говоря переменые поумолчанию передаются по ссылке, так что слово ref излишне вообще передача родительского класса вполне логичный вариант, но есть альтернатива: в классе player создать событие, а в классе game привязать к нему обработчик в котором изменять нужные данные, которые можно передать как параметры события |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Наследование на C++ | dziga1989 | Помощь студентам | 5 | 22.10.2009 11:25 |
Наследование | alex_triton | Общие вопросы C/C++ | 0 | 19.10.2009 20:25 |
Просто не догоняю как сделать, плиз помогите Великие ПРОГРАМЕРЫ )) | PUSHkiN | Помощь студентам | 12 | 12.06.2008 17:57 |
Как отобразить категории, имеющие вложенность произвольной глубины?! | Aska | БД в Delphi | 4 | 31.10.2007 01:03 |