gpt4 book ai didi

c++ - 使用 nullptr 调用重载方法是不明确的

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:37 25 4
gpt4 key购买 nike

我有一些重载方法,它们采用一些不同的指针类型。
现在我想用 nullptr 作为参数调用一个特定的方法。

我知道我可以将 nullptr 转换为特定类型的指针,我希望它调用的方法需要。
但我不想/不能转换 nullptr

这个例子应该解释我想做什么:

class Foo {
//some attributes
};
class Bar {
//some attributes
};

void myMethod (Foo*) {
//I want this method to be called
}
void myMethod (Bar*) {
//Not this one
}

int main () {
myMethod(nullptr); //Something like this
// myMethod(static_cast<nullptr>); //I don't want to write this.

return 0;
}

如果我只是用 nullptr 调用它,我会得到
错误:重载“myMethod(std::nullptr_t)”的调用不明确
因为编译器不知道应该调用哪个方法。

有没有办法做我想做的事?
喜欢类似于模板特化的东西吗?

最佳答案

您可以创建一个重载 std::nullptr_t作为参数,然后在其中调用所需的确切函数(通过转换):

void myMethod(std::nullptr_t)
{
myMethod(static_cast<Foo*>(nullptr));
}

关于c++ - 使用 nullptr 调用重载方法是不明确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056157/

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