![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Гость_Alexey |
|
|||
|
Unregistered |
Сразу: пишу в VC++ 6. В общем есть некоторый класс (таблица) и в нем заданы некоторые свойства, ну допустим:
ROW здесь это за-typedef-енный тип структуры (строка таблицы), содержащей определенные поля (скажем, для простоты, что все поля int-овые). В конструкторе объекта создается массив строк таблицы в количестве count. После создания объекта при инициализации полей (в контрукторе обращаюсь к полям через this->DB[индекс].поле и делаю присваивание) выдается Access violation. Чертовщина какая-то... Как бы его отследить и выловить? ЗЫ - сразу извиняюсь, если вопрос покажется ламерским, потому что я только начинаю прогать в области ООП |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Хотелось бы увидеть сам конструктор
|
|||
|
||||
| Гость_Alexey |
|
||||||
|
Unregistered |
Да, пожалуйста.
Инициализация:
Полагаю, тогда и структуры придется расписать для наглядности.
|
||||||
|
|||||||
| Да гость я... |
|
|||
|
Unregistered |
Сразу скажу, что только бегло просмотрел код. Ряд тривиальных рекомендаций:
1) Нет необходимости явно использовать this. Компайлер за Вас сам это сделает. 2) Вместо struct date я бы использовал тип time_t (что есть просто typedef unsigned long time_t). Во-первых, в 9 раз меньше места занимает, чем у Вас, а во-вторых, имеется полный набор CRT ф-ций для манипуляции с данными этого типа. Если уж так хочется, то можно написать класс-обертку, методы к-рого позволяют а) проиницилизировать переменную time_t и б) получить все нужные вам значения как-то year, month, date etc. Реализация может быть примерно такой:
Хотя есть ещё более простое решение: в БД хранить time_t, а для вместо указанного выше CWTime - использовать MFС/ATL класс - CTime. Для VC6 это класс MFC, а для VC7 - ещё и ATL. Один из конструкторов CTime принимает time_t, а набор его методов более, чем достаточный. ЗЫ: по поводу классов для работы с БД, почему Вам CDaoRecordset не подходит? |
|||
|
||||
| Да гость я... |
|
|||
|
Unregistered |
Ну, просмотрел код
Итак, атрибут класса ROW* DB так и остался неинициализированным. ЗЫ: хоть и ругают венгерскую нотацию, но я лично "m_" для членов класса всегда юзаю. И мне не нравятся более новомодные варианты обозначений вроде atribute_ или _atribute. |
|||
|
||||
| Гость_Alexey |
|
|||
|
Unregistered |
Спасибки, кажется до меня таки дошло в чем дело =) Жалко что мы гости, так бы авторитет поднял =)
Потому что это задание для универа. Сначала пишем управление строками, таблицами, потом выше и выше по иерархии. Если бы не надо было это ручками писать, конечно бы запользовал готовый класс. |
|||
|
||||
| Гость_Alexey |
|
||||
|
Unregistered |
Браво! Все заработало, стоило только заменить в конструкторе
на
|
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
Гость_Alexey
Все-таки полезно юзать "m_" для имен членов класса - описка сразу была бы заметна.
Придется зарегистрироваться... |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
А разве m_ относится к венгерская нотации? Это просто соглашения, принятые MS -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Относятся. Просто мелкософт принял венгрескую нотацию.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |