【发布时间】:2016-05-27 08:26:01
【问题描述】:
我有以下功能:
void func1(int8_t input);
void func1(int16_t input);
void func1(int32_t input);
void func1(float input);
这四个函数的实现是相同的,除了一些内部值与输入类型(int8_t、int16_t、int32_t或float)一致。
目前我正在通过复制粘贴创建其他三个功能,但这很乏味。
有什么办法让我只写一个函数(例如func1(int8_t input);),而在构建时,其他三个函数会自动创建?
或者这可以在不需要其他三个功能的情况下工作?任何其他解决方案都非常受欢迎。
【问题讨论】:
-
你不能有四个具有不同参数类型的相同函数名,而不是在 C 中。
-
你不能在 C 中拥有这四个函数——它不支持重载,所以你必须给它们起不同的名字(例如 func1_int8)。它们在 C++ 中可以具有相同的名称,但该语言具有比 C 更好的机制(例如模板)来实现您想要的。
-
请说明您的具体问题或添加其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。
-
是什么阻止您为此使用模板? en.cppreference.com/w/cpp/language/function_template
-
我打算建议一个模板,假设每个函数内部的逻辑基本相同。而且我不确定为什么这被标记了。这是一个完全合理的问题,答案是了解模板。