功能原型,没有定义

Function prototype, without definition

本文关键字:定义 原型 功能      更新时间:2023-10-16

我正在开发一个不能使用Classes的库。当获取KeyDown事件时,我会调用一个函数,并且我想调用一个我之前在库中为其设置原型的函数。问题是,如果用户不想处理任何输入,我不想强制他定义这个函数。但是链接器不允许我在没有定义的情况下定义原型,或者设置默认的空定义。我能做什么?顺便说一下,我正在使用C++。。。

这是原型/

void keyDown(int virtual_keyCode);
void keyUp(int virtual_keyCode);

在C++中无法重新定义函数。阅读这篇关于一个定义规则的文章。

在任何一个转换单元中,只允许对任何变量、函数、类类型、枚举类型、概念(由于C++20(或模板进行一个定义(其中一些可能有多个声明,但只允许一个定义(。

通过继承可以重载类函数。重载与重新定义不同。

你可以使用函数指针,你可以重新分配,例如

#include<functional>
#include<iostream>
std::function<void(int)> keyUp = [](int) {};
void unused() {
keyUp(2);
}
void KeyUp(int i) {
std::cout << i << i << 'n';
}
int main() {
unused(); // no print
keyUp = [](int i) { std::cout << i << 'n'; };
unused(); // prints 2
keyUp = KeyUp;
unused(); // prints 22
}

它看起来不一样,但实际上是一样的。。。