Название: Публичную переменную в классе не видно извне Отправлено: FireSnake от Март 26, 2011, 01:14 Создал свой класс, унаследованные от QSqlTableModel
Код
так вот, из другого класса Код на последнюю строчку кричит class QSqlTableModel has no member named ‘proxy’, не понятно почему он берет его из QSqlTableModel что я делаю не так? Название: Re: Публичную переменную в классе не видно извне Отправлено: Fat-Zer от Март 26, 2011, 01:45 Скорей всего model объявлен у вас как "QSqlTableModel *model;"
про то, что так не надо делать я промолчу... Название: Re: Публичную переменную в классе не видно извне Отправлено: FireSnake от Март 26, 2011, 11:57 А почему так делать нельзя? В учебниках сказано что не динамически создавать только объекты находящиеся на вершине иерархии. В данном случае модель не находится на вершине иерархии. Подскажите пожалуйста как нужно правильно делать?
Название: Re: Публичную переменную в классе не видно извне Отправлено: Авварон от Март 26, 2011, 12:39 Дело не в динамическом создании в том, что проксей управляет другой класс. Инкапсуляции нет.
А вообще вроде должно быть видно. Название: Re: Публичную переменную в классе не видно извне Отправлено: FireSnake от Март 26, 2011, 12:57 так я по этому и запарился, что аналогичный способ с наследованием других классов - работал, все было видно, а вот с QSqlTableModel что то не получается. Если создать наследуемый класс от моего же, то все становится видно, но это как то корявенько
Название: Re: Публичную переменную в классе не видно извне Отправлено: lit-uriy от Март 26, 2011, 16:54 FireSnake пересобери весь проект, с полной очисткой.
Всё должно быть видно. Название: Re: Публичную переменную в классе не видно извне Отправлено: FireSnake от Март 26, 2011, 17:15 попробовал, но не помогло(
Название: Re: Публичную переменную в классе не видно извне Отправлено: brankovic от Март 26, 2011, 18:05 Код что я делаю не так? А какого типа переменная model? MySqlTableModel * или SqlTableModel *? Название: Re: Публичную переменную в классе не видно из Отправлено: lucky от Март 27, 2011, 11:28 Скорее всего указатель model действительно типа QSqlTableModel*. Если написать так:
Код: QSqlTableModel *model = new MySqlTableModel; Код: MySqlTableModel *model = new MySqlTableModel; P.S. Делать публичные поля класса - не красиво. |