编译此代码时出现错误。错误说'&((WidgetButton*)this)->WidgetButton::callback' cannot be used as a function
。我不知道为什么。我做错了什么?
稍微解释一下。此代码的目的是能够以 OOP 方式将按钮添加到 GUI 中。callback
是赋予构造函数的函数,当按钮被激活(单击)时将调用该函数。尽管现在它仅在您按下空格时才会激活,但目的是确保 GUI 与Widget
派生类一起使用。
小部件按钮.h
#pragma once
#include "cgl.h"
#include <GLFW/glfw3.h>
class WidgetButton : Widget
{
public:
WidgetButton(GLFWwindow* window, void* callback, int sender);
void onUpdate(double delta);
void onRender();
private:
void* callback;
int sender;
};
小部件按钮.cpp
#pragma once
#include "WidgetButton.h"
#include <GLFW/glfw3.h>
WidgetButton::WidgetButton(GLFWwindow* window, void* callback, int sender) : Widget(window)
{
this->callback = callback;
this->sender = sender;
}
void WidgetButton::onUpdate(double delta)
{
if (glfwGetKey(this->window, GLFW_KEY_SPACE))
(&this->callback)(sender); //This is where the error happens
}
void WidgetButton::onRender()
{
}