| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Поиск ошибки |
| Автор: stat007 10.12.2008, 18:54 | ||
Программа чёта выдаёт ошибку в строке *, подскажите почему:
|
| Автор: Fazil6 10.12.2008, 19:02 |
потому что p[i] это совсем не obи присваивать так нельзя |
| Автор: Acer 10.12.2008, 19:04 |
| *тут я был не прав* |
| Автор: Kallikanzarid 10.12.2008, 19:05 |
| 1) вместо p[i] = ob, очевидно, должно идти p[i] = ob[i] 2) По умолчанию в случае нехватки памяти new не возвращает NULL, а поднимает исключение std::bad_alloc. Поэтому либо лови исключение, либо используй p = new<nothrow> myclass[10] - эта версия new как раз возвращает NULL при неудаче. 3) В твоем классе нет оператора присваивания, аксессор не помечен как const, конструктор с одной переменной не помечен как explicit (хотя последнее - не всегда плохо). Также ты не используешь список инициализаторов. Все это делает твой код неэффективным (в теории, конечно, для таких игрушечных классов это не так важно). 4) Еще мелочь - в цикле лучше использовать ++i, а не i++. Для обычных переменных это абсолютно неважно, но лучше привыкай сразу, ибо итераторы STL подобное не прощают. Добавлено через 1 минуту и 31 секунду Acer, как бы тебе по-мягче сказать... Ты... эээ... хм... не прав. Да, вот! Ты не прав. |
| Автор: stat007 10.12.2008, 20:05 |
| ок! спасибо! а ещё такой вопрос: как инициализировать массив в данной программе, ну что бы выводилось 1 2 3 4 5 и т.д. ?? |
| Автор: Kallikanzarid 10.12.2008, 20:10 |
| p[i] = myclass( i ) или p[i] = i; // если твой конструктор не помечен как explicit или ты определил оператор присваивания |