gpt4 book ai didi

c++ - 对重载函数的模糊调用

转载 作者:可可西里 更新时间:2023-11-01 18:29:43 28 4
gpt4 key购买 nike

我有两个功能:

void DoSomething( const tchar* apsValue )
void DoSomething( size_t aiValue )

现在我想将“0”作为 size_t 传递:

DoSomething(0);

编译器抛出错误:“对重载函数的模糊调用”

为了解决这个问题,我可以使用 static_cast,例如:

DoSomething(static_cast<size_t>(0));

或者简单的:

DoSomething(size_t(0));

其中一个比另一个更好吗?有没有其他方法可以解决这个问题?

最佳答案

这是不明确的,因为 0 的类型是 int,而不是 size_t。它可以转换到 size_t 或一个指针,所以如果你有两者的重载,这是模棱两可的。一般来说,如果你有重载函数,其中之一可以采用整数类型,您添加int 的重载,可能类似于:

inline void DoSomething( int aiValue )
{
DoSomething( static_cast<size_t>( aiValue ) );
}

整型字面量默认为 int 类型(除非它们太大而无法适合 int),通过提供精确匹配,您可以避免任何歧义。

关于c++ - 对重载函数的模糊调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377601/

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