|
|
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
В CViewMyClass определён экземпляр класса m_MyTree. Как правильно подобраться к функциям этого экземпляра (например к функции: SelectedItemesCount()) из другого класса? Делаю так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 16:36:49 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Чуть не забыл: unmanage C++ MFC, VS2005 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 16:39:46 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
что значит "код не работает"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 16:42:49 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Т.е. компилятор пропускает в любом случае, но после того, как, допустим, создаю новую функцию в классе, из которого пытаюсь получить доступ к m_MyTree, или объявляю новую переменную после или перед указанных строк, то выполнение функции обрывается на строке n2=lpMyClass->m_MyTree.SelectedItemesCount(). Причём в функцию SelectedItemesCount() при выполнении программа попадает, но там стабильно обрывается на первой же строчке =( "Обрывается" означает следующее: ставлю точку останова на первую строчку функции SelectedItemesCount() программа доходит до неё и, при шаге вперёд, выполнение функции прекращается без каких-либо ошибок и т.п.... сама программа остаётся работоспособной... но функция, таким образом, не работает. Стоит убрать дописанные строчки и всё снова работает! Но вот мне это совсем не подходит. Думаю, что-то с памятью... но вот что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 16:55:01 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
инициализация CViewMyClass *lpMyClass; происходит где-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 17:01:40 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Нет, вот я и думаю, что надо бы написать CViewMyClass *lpMyClass = ...; (хотя не уверен, что надо - это ведь ссылка на класс...) Но не знаю, что надо написать вместо многоточия - чего только не пробывал... =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 17:12:21 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. или Код: plaintext 1. а так у вас указатель указывает в никуда.. и работать не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 17:21:48 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Новый экземпляр класса мне создавать нельзя, т.к. нужно "подобраться" к текущему состоянию полей уже созданного класса. Попробовал следующее: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 17:51:38 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
smathcopmНовый экземпляр класса мне создавать нельзя, т.к. нужно "подобраться" к текущему состоянию полей уже созданного класса. Попробовал следующее: Код: plaintext CViewMyClass - это не объект класса, а просто тип данных, нужно взять реальный объект класса (переменную), который имеет тип CViewMyClass или CViewMyClass* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 18:02:23 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
может будет эффективнее сначала выучить C++ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 18:04:27 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Конкретно этим и занимаюсь. Так-то я уже многое понимаю, но состояние безвыходности при некоторых ситуациях убивает. Проблема не решилась. Если бы я мог где-то взять этот созданный объект я бы и вопроса не задавал. Проблема усложняется тем, что экземпляр класса был создан не мною с помощью макроса Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 18:17:01 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
smathcopmКонкретно этим и занимаюсь. Так-то я уже многое понимаю, но состояние безвыходности при некоторых ситуациях убивает. Проблема не решилась. Если бы я мог где-то взять этот созданный объект я бы и вопроса не задавал. Проблема усложняется тем, что экземпляр класса был создан не мною с помощью макроса Код: plaintext 1. pDocTemplate->m_pViewClass я ничего не смыслю в этих виндовых надстройках, поэтому если ошибусь не бейте.. Создал пустой проект, там есть строка: Код: plaintext 1. 2. 3. 4. 5. значит созданный в рантайм объект попадает в конструктор объекта класса CSingleDocTemplate, который наследуется от CDocTemplate, а тот в свою очередь от CCmdTarget, который имеет в своем списке: Код: plaintext возможно это оно, можно проследить, тока лень, попробуйте типа: Код: plaintext если не получится, проследите, кому присваивает конструктор эти значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 18:34:07 |
|
||
|
Создание ссылки на класс
|
|||
|---|---|---|---|
|
#18+
Tubrik, огромное Вам спасибо! А то я уже почти отчаялся... В конечном итоге помогло следующее: С помощью данной функции, оказалось, можно получить созданный объект: Код: plaintext 1. 2. 3. Ну а так я его получил: Код: plaintext 1. 2. 3. Всё-таки метод "тыка" - МЕТОД =) Буду учиться дальше, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 19:06:03 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34882596&tid=2027977]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
182ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 446ms |

| 0 / 0 |
