gpt4 book ai didi

C++ 最佳实践 : function to accept uint8_t, uint16_t、uint32_t、float

转载 作者:行者123 更新时间:2023-11-27 23:46:13 27 4
gpt4 key购买 nike

我有一组(可能重载的)函数:

write(uint16_t index, uint16_t subindex, uint8_t  data)
write(uint16_t index, uint16_t subindex, uint16_t data)
write(uint16_t index, uint16_t subindex, uint32_t data)
write(uint16_t index, uint16_t subindex, float data)

尽管 eclipse 向我展示了例如 typedef unsigned short int uint16_t; 当我将鼠标悬停在 uint16_t 上时,我遇到了错误:

call of overloaded ‘`write(int, int, int)`’ is ambiguous

在函数内部我必须知道,如果数据是 uint8_tuint16_t

我能做什么?还有其他方法吗,例如 write(uint16_t index, uint16_t subindex, int data, enum type) ?

最佳答案

调用不明确,因为编译器不知道您要调用哪个版本的函数。例如,这样的用法:

write(1, 2, 3);

什么是 3 ?可能是 uint8_tuint16_t或者其他人……

编译器不会猜测,也不会做一些疯狂的事情,而是告诉您它不知道。您可以通过多种方式解决此问题:

  1. 为您的函数定义不同的名称,例如。 writeUInt8t(... , uint8_t in)
  2. 在使用函数时准确指定要调用的函数:write(1, 2, static_cast<uint8_t>(3))

关于C++ 最佳实践 : function to accept uint8_t, uint16_t、uint32_t、float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50386402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com