sách gpt4 ai đã đi

c++ - 错误 : cannot convert 'void (CApp::*)()' to 'void (*)()' for argument '1' to 'void Mix_HookMusicFinished(void (*)())'

In lại 作者:太空宇宙 更新时间:2023-11-04 11:54:36 29 4
mua khóa gpt4 Nike

我正在尝试使用 SDL 和 SDL_Mixer 为音频创建一个 C++ 应用程序,并且正在尝试遵循 cái này教程。但是,使用 SDL_Mixer 的 Mix_HookMusicFinished() 不起作用,给出错误:类型 'void (CApp::)()' 的参数与 'void (*)()' 不匹配

我研究过这个错误,问题似乎是 cleanMusic 是 CApp 的一个成员函数。但是,我不知道如何解决这个问题,因为大多数与此类似的问题都围绕着 pthread_create() 展开。我的 cleanMusic() 函数需要能够访问 music_,它是 CApp 的私有(private)变量。我该如何解决错误?

这是 CApp.h、CApp::handleKeyEvents() 和 CApp::cleanMusic() 的代码。如果您需要查看其他内容,请告诉我。

CApp.h

#ifndef CAPP_H
#define CAPP_H

#include
#include

#include
#include

class CApp {
riêng tư:
bool isRunning_;
riêng tư:
void cleanMusic();
riêng tư:
SDL_Surface *surfDisplay_;
Mix_Music *music_;
bool isRotating_;
GLfloat rQuad_;
công cộng:
CApp();
int run();
công cộng:
bool initialize();
void handleEvents(SDL_Event *event);
void loopData();
void render();
void clean();

công cộng:
void handleKeyEvents(SDL_KeyboardEvent *key);
};

#endif // CAPP_H

CApp::handleKeyEvents()

#include "CApp.h"

void CApp::handleKeyEvents(SDL_KeyboardEvent *key) {
switch(key->keysym.sym) {
case SDLK_m:
if (key->state == SDL_PRESSED) {
if(music_ == NULL) {
music_ = Mix_LoadMUS("resources\\audio\\boop.wav");
Mix_PlayMusic(music_, 0);
Mix_HookMusicFinished(cleanMusic);

isRotating_ = true;
} khác {
Mix_HaltMusic();
cleanMusic();
isRotating_ = false;
}
}
phá vỡ;
mặc định:
phá vỡ;
}
}

CApp::cleanMusic()

#include "CApp.h"

void CApp::cleanMusic() {
Mix_FreeMusic(music_);
music_ = NULL;
}

1 Câu trả lời

两个变化。 cleanMusic 需要是tĩnh.

static void cleanMusic();

其次,您注册 Hook :

Mix_HookMusicFinished(&CApp::cleanMusic);

由于您的方法现在是tĩnh,music_ 也需要是tĩnh.

static Mix_Music *music_;

这意味着在 CApp 的所有实例化之间只会共享该变量的一个实例。由于我没有看到您的所有代码,因此无法判断这是否是一个问题。

关于c++ - 错误 : cannot convert 'void (CApp::*)()' to 'void (*)()' for argument '1' to 'void Mix_HookMusicFinished(void (*)())' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659664/

29 4 0
Bài viết được đề xuất: 单例上的 C++
Bài viết được đề xuất: java - HTTP 状态 405 - 所请求的资源不允许指定的 HTTP 方法
Bài viết được đề xuất: java - JUnit 测试 Controller 错误
Bài viết được đề xuất: jquery - Margin Auto 渲染到 Margin 0px
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com