函数原型,未定义

问题描述 投票:0回答:1

我正在开发一个不能使用类的库。我有一个在获取KeyDown事件时调用的函数,我想调用一个我之前在库中设置原型的函数。问题是,如果用户不想处理任何输入,我不想强​​制用户定义此功能。但是链接器不会让我定义没有定义的原型或设置默认的空定义。我能做什么?我正在使用C ++ ...

这是原型/

void keyDown(int virtual_keyCode);
void keyUp(int virtual_keyCode);
c++ prototype definition
1个回答
0
投票

在C ++中无法重新定义功能。阅读this关于一个定义规则。

在任何一个翻译单元中都只允许对任何变量,函数,类类型,枚举类型,概念(自C ++ 20起)或模板进行一个定义(其中一些可能具有多个声明,但仅允许一个定义) 。

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

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

#include<functional>
#include<iostream>

std::function<void(int)> keyUp = [](int) {};

void unused() {
    keyUp(2);
}

int main() {
    unused(); // no print
    keyUp = [](int i) { std::cout << i << '\n'; };
    unused(); // prints 2
}

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

© www.soinside.com 2019 - 2024. All rights reserved.