Russian Qt Forum
Ноябрь 24, 2024, 04:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ошибка: cannot call member function without object  (Прочитано 8218 раз)
megido
Гость
« : Июнь 19, 2016, 00:59 »

значит есть у меня вот такая функция
Код:
шапка:
static void CALLBACK ProcessBuffer(const void *buffer, DWORD length, void *user);
код:
void  Player::ProcessBuffer(const void *buffer,DWORD length,void *user)
{
    emit SetSongName(time_info);

}
vold Player::Play()
{
    chan = BASS_StreamCreateURL(url,0,BASS_STREAM_BLOCK|BASS_STREAM_STATUS|BASS_STREAM_AUTOFREE,ProcessBuffer,this);
 
}

когда я пытаюсь в ней послать сигнал получаю вот эту ошибку

Код:
ошибка: cannot call member function 'void Player::SetSongName(QString)' without object
     emit SetSongName(time_info);

кстати вызвать из нее другую функцию я тоже не могу

какой объект оно хочет?
                            
« Последнее редактирование: Июнь 19, 2016, 02:12 от megido » Записан
Bepec
Гость
« Ответ #1 : Июнь 19, 2016, 01:17 »

Без кода можем только анекдот рассказать, за денежку.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Июнь 19, 2016, 02:21 »

а SetSongName помечена как Q_SIGNAL?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Июнь 19, 2016, 02:26 »

из статического метода сигнал ты не пошлешь, так как это метод на уровне класса, не конкретного объекта.

тебе надо в качестве дополнительного параметра этому коллбэку передавать this (параметр user, насколько я понимаю), потом в коллбэке кастануть user к классу Player и вызвать метод (его надо написать), который внутри и пошлет сигнал.
« Последнее редактирование: Июнь 19, 2016, 02:29 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
megido
Гость
« Ответ #4 : Июнь 19, 2016, 02:32 »

а SetSongName помечена как Q_SIGNAL?
а как же
Записан
megido
Гость
« Ответ #5 : Июнь 19, 2016, 02:53 »

из статического метода сигнал ты не пошлешь, так как это метод на уровне класса, не конкретного объекта.

тебе надо в качестве дополнительного параметра этому коллбэку передавать this (параметр user, насколько я понимаю), потом в коллбэке кастануть user к классу Player и вызвать метод (его надо написать), который внутри и пошлет сигнал.
спасибо за наводку. работает
Код:
    Player* pthis = (Player*)user;
    pthis->SetTimeInfo(time_info);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.27 секунд. Запросов: 23.