功能原型,没有定义
Function prototype, without definition
我正在开发一个不能使用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
}
它看起来不一样,但实际上是一样的。。。
相关文章:
- 具有enable_if外部类原型的模板类构造函数定义
- 在 linux 原因上运行自定义原型插件
- 功能原型,没有定义
- 如何使用 "using" 关键字定义函数原型/签名
- 未定义原型函数?
- 定义重载C++函数模板的原型时,使用其名称引用以前的定义是否合法?
- 继承基类,定义基类的原型方法,但从第三个对象调用子类的方法
- 将定义的函数的函数原型放在不同的源(而不是头)文件中合法/好吗
- 头文件中定义的函数的原型错误
- C++:警告:C4930:未调用原型函数(是否为变量定义?)
- 多重定义,如何原型化std::map
- 使用函数定义和原型重写代码
- 函数原型/定义
- 寻找有关函数定义和原型中数组引用的说明
- 在类的私有部分为复制构造函数定义原型如何防止类的复制
- 我在 C++ 的 .h 文件中进行原型设计并在 Cpp 文件上定义它们时遇到问题
- 我可以在头文件(C++)中同时指定函数原型和函数定义吗
- C++模板类原型,函数定义
- 类函数原型与定义不匹配-如何修复
- 如何为一个期望istream的方法定义原型