The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Не могу обратиться к переменным из класса через ссылку :-("
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Не могу обратиться к переменным из класса через ссылку :-("
Сообщение от Serega_S emailИскать по авторуВ закладки(ok) on 19-Июн-04, 13:07  (MSK)
Народ! Помогите, что-то я совсем не соображаю уже... Вот такая вот вещь:
есть класс wnd, который наследует класс диалога qt, но это не так важно - работает. В нем есть текст-едит TE_send.
class wnd{...QTextEdit* TE_send;...};
И есть глобальная структура:
struct st{... int main_wnd; ...}flags;
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
wnd mw;
flags.main_wnd=(int)&mw;
a.setMainWidget(&mw);
mw.show();
      ...
}
И есть функция:
void send()
{
    printf("\n%s",((wnd)(flags.main_wnd)).TE_send->text().ascii());
}
На которую компилятор ругается:

main.cpp: In function `void send ()':
main.cpp:122: no matching function for call to `wnd::wnd (int &)'
wnd.h:8: candidates are: wnd::wnd ()
wnd.h:19:                 wnd::wnd (const wnd &)
make: *** [main.o] Ошибка 1

Причём если написать  printf("\n%s",TE_send->text().ascii()); в методе класса wnd, то всё пучком.
Я уже и через -> пробовал - хоть и не должно по идее - и не было :-)
Почему он такое выдаёт - дотумкать не могу! Помогите!!!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Не могу обратиться к переменным из класса через ссылку :-("
Сообщение от foxru Искать по авторуВ закладки(ok) on 19-Июн-04, 15:03  (MSK)
так как в
flags.main_wnd=(int)&mw;
ты сохраняеш адрес то соответсвенно при печати у тебя должно быть
printf("\n%s",((wnd *)(flags.main_wnd))->TE_send->text().ascii());
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Не могу обратиться к переменным из класса через ссылку :-("
Сообщение от Serega_S emailИскать по авторуВ закладки(ok) on 20-Июн-04, 13:46  (MSK)
>так как в
>flags.main_wnd=(int)&mw;
>ты сохраняеш адрес то соответсвенно при печати у тебя должно быть
>printf("\n%s",((wnd *)(flags.main_wnd))->TE_send->text().ascii());

Я так пробовал, но на это вот такое выдаётся:

main.cpp: In function `void send ()':
main.cpp:122: invalid use of undefined type `class QTextEdit'
main_wnd.h:26: forward declaration of `class QTextEdit'
make: *** [main.o] error 1

причём если бы он был действительно ундифайнет, то и из метода класса wnd ругался бы...
Вот как он описан :
class main_wnd : public QDialog
{
    Q_OBJECT

public:
    main_wnd( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
    ~main_wnd();

    QTextEdit* TE_send;
...
};

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Не могу обратиться к переменным из класса через ссылку :-("
Сообщение от foxru Искать по авторуВ закладки(ok) on 22-Июн-04, 17:14  (MSK)
>>так как в
>>flags.main_wnd=(int)&mw;
>>ты сохраняеш адрес то соответсвенно при печати у тебя должно быть
>>printf("\n%s",((wnd *)(flags.main_wnd))->TE_send->text().ascii());
>
>Я так пробовал, но на это вот такое выдаётся:
>
>main.cpp: In function `void send ()':
>main.cpp:122: invalid use of undefined type `class QTextEdit'
>main_wnd.h:26: forward declaration of `class QTextEdit'
>make: *** [main.o] error 1
>
>причём если бы он был действительно ундифайнет, то и из метода класса
>wnd ругался бы...
>Вот как он описан :
>class main_wnd : public QDialog
>{
>    Q_OBJECT
>
>public:
>    main_wnd( QWidget* parent = 0, const char* name
>= 0, bool modal = FALSE, WFlags fl = 0 );
>
>    ~main_wnd();
>
>    QTextEdit* TE_send;
>...
>};


это только указатель объявлен
там случайно нет выше описания класса main_wnd записи вида class QTextEdit; ?! если есть то естественно этот код будет верен но в сpp классе где это используеться нужно непосредственно подключить QTextEdit.h

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Не могу обратиться к переменным из класса через ссылку :-("
Сообщение от Serega_S emailИскать по авторуВ закладки(ok) on 27-Июн-04, 11:10  (MSK)
>это только указатель объявлен
>там случайно нет выше описания класса main_wnd записи вида class >QTextEdit; ?! если есть то естественно этот код будет верен но в сpp >классе где это используеться нужно непосредственно подключить QTextEdit.h

Там дальше в конструкторе есть:
TE_send = new QTextEdit( tab, "TE_send" );

И оно работает, если вызывать из методов класса, созданного на базе этого. Т.е. там (у меня) такой замут:
QT designer делает класс main_wnd где и создаётся это всё т.е. TE_send (он наследует QDialog - ну это в принципе не важно). Далее я наследуюю этот класс (main_wnd) классом wnd. И в нём если в методе прописать, то можно обращаться к методам TE_send и всё работает. В главной программе я создаю именно этот свой wnd и уже через указатель на него в глобальной функции хочу вызывать методы TE_send. А оно не хотит. Вот такие вот странности...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Не могу обратиться к переменным из класса через ссылку :-("
Сообщение от foxru Искать по авторуВ закладки(ok) on 28-Июн-04, 13:55  (MSK)
>>это только указатель объявлен
>>там случайно нет выше описания класса main_wnd записи вида class >QTextEdit; ?! если есть то естественно этот код будет верен но в сpp >классе где это используеться нужно непосредственно подключить QTextEdit.h
>
>Там дальше в конструкторе есть:
>TE_send = new QTextEdit( tab, "TE_send" );
>
>И оно работает, если вызывать из методов класса, созданного на базе этого.
>Т.е. там (у меня) такой замут:
>QT designer делает класс main_wnd где и создаётся это всё т.е. TE_send
>(он наследует QDialog - ну это в принципе не важно). Далее
>я наследуюю этот класс (main_wnd) классом wnd. И в нём если
>в методе прописать, то можно обращаться к методам TE_send и всё
>работает. В главной программе я создаю именно этот свой wnd и
>уже через указатель на него в глобальной функции хочу вызывать методы
>TE_send. А оно не хотит. Вот такие вот странности...


а можеш код проекта показать? шли на мыло foxru@newmail.ru

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру