crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QSA как вернуть значения из функции через параметры
Гость_Evgeny_*
сообщение 19.6.2008, 2:21
Сообщение #1





Гости








    


в QSA хотелось бы просто получить из функции значения, через указатель или ссылку но ни так ни так не полчается, есть ли такой метод? за исключением return.

Вообще возврат значений через параметры функции в Qt я кажется не встречал еще, все только через return. Есть этому какое-то объяснение?

спасибо заранее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
niXman
  опции профиля:
сообщение 19.6.2008, 3:14
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 169
Регистрация: 18.6.2008
Пользователь №: 204

Спасибо сказали: 1 раз(а)




Репутация:   0  


Ну как обычно - По ссылке или указателю.
По ссылке:
int val = 0;
void set_val(int& v) {
   v = 10;
}
set_val(val);
...
val == 10;

По указателю:
int val = 0;
void set_val(int* v) {
   *v = 10;
}
set_val(&val);
...
val == 10;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Evgeny_*
сообщение 19.6.2008, 12:26
Сообщение #3





Гости








    


Цитата(niXman @ 19.6.2008, 3:14) *
Ну как обычно - По ссылке или указателю.
По ссылке:
int val = 0;
void set_val(int& v) {
   v = 10;
}
set_val(val);
...
val == 10;

По указателю:
int val = 0;
void set_val(int* v) {
   *v = 10;
}
set_val(&val);
...
val == 10;


это обычно для Си,но в QSA так не прокатывает. Ни в самом QSA, ни в объекте который я добавляю в QSA, то есть у меня есть класс
class A : public QObject 
{
    Q_OBJECT
public:
    A() {setObjectName("A");}

public slots:
    virtual void f(int &v)
    {
        v = 10;
    }
};


и есть main():
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSProject project;
    A a1;
    project.addObject(&a1);

    QSWorkbench *wb = new QSWorkbench(&project);
    wb->open();

    return a.exec();
}

после этого пишу скрипт:
var v;
A.f(v);

выдает ошибку:
Error. No matching slot found, available overloads are:
void A::f(int&)

если через указатель то всегда приходит NULL .

Как бороться с этим?
Причина редактирования: используйте тэг code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2025, 11:16