![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
carol |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.1.2006 Репутация: нет Всего: нет |
Есть 2 класс а А и B почему вылетает?
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
В чем смысл этого кода? Чему присваивается новый объект?
Это сообщение отредактировал(а) Earnest - 2.2.2007, 18:50 -------------------- ... |
|||
|
||||
carol |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.1.2006 Репутация: нет Всего: нет |
в классе B ( методе func)надо вызвать метод SomeFunc();
ну я и делаю в классе B указатеь типа A , и через этот указатель вызываю метод SomeFunc(); Но прога у меня вылетает |
|||
|
||||
Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Еще раз: в конструктор B передается указатель на объект A, который присваивается члену pt. Он инициализирован?
Далее, затем этому указателю (параметру функции! переданному по значению!) присваивается новая выделенная память... и пропадает бесследно... Еще далее. Код
видимо надо читать как
Если здесь вылетает, то причина скорее всего в неинициализированном объекте pt. Дикий конструктор наводит на мысль, что ты решил, что выделенный объект попадет в pt... Это не так... -------------------- ... |
||||
|
|||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Модератор: Название темы должно отражать ее суть!
Правила форума: http://forum.vingrad.ruhttp://forum.vingra...ct-SR/f-27.html |
|||
|
||||
carol |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.1.2006 Репутация: нет Всего: нет |
а если так .
|
|||
|
||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
хотите отгадать решение ![]()
это можно сделать, например, так:
|
||||
|
|||||
carol |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.1.2006 Репутация: нет Всего: нет |
|
|||
|
||||
Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Неправильно.
Изначально создается объект B
Теперь смотрим как создался объект А: Он создался с конструктором по умолчанию (по идее ругаться должен - я не нашел такого конструктора) Затем вызываем метод pt_A->methodA() И что в нем видим?
А в каком месте инициализируется pt_b? |
||||
|
|||||
carol |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.1.2006 Репутация: нет Всего: нет |
почему нельза переменной класса А присвоить значение переменной класса B (через указатель на класс В)? у меня вить есть указатель типа В в классе А. P.S при чем тут
|
||||
|
|||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
На момент выполнения этой инструкции:
int x = pt_b->member Чему равен указатель pt_b? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
указатель есть, а объекта, на который он указывает нет |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
carol, во первых я вижу по крайней мере три ошибки, из за которых код не откомпилируется;
во вторых, объясните, что вы хотите получить, а то что то не очень понятно; в третьих, надо показывать не только как вы определили классы, но и как их используете; в четвертых, существует режим пошагового выполнения программы, можно легко проследить, куда и что у вас присваивается. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |