gpt4 book ai didi

c++ - 调用函数时防止转换 int

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

我有以下代码:

void foo(int64_t x) {}
void bar(int64_t* x) {}

int main() {
int32_t a = 3;
foo(a);
bar(&a);
}

当我尝试编译它时,它给出了无法将 int32_t* 转换为 int64_t* 的错误,这就是我想要的。

当我尝试调用 foo(a) 时是否有可能出现一些类似的错误?

最佳答案

作为解决方法,您可以使用已删除的版本重载 foo:

void foo(int32_t x) = delete;
void foo(int64_t x) {}

作为更通用的解决方案,您可以创建一个已删除的函数模板,然后将其专门用于 int64_t(感谢@Someprogrammerdude):

template<typename T>
void foo(T) = delete;

template<>
void foo(int64_t x) {}

有趣的是,它不使用 clang 3.8 编译, 但用 clang 3.9 编译得很好和 gcc 6.2 .

关于c++ - 调用函数时防止转换 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237235/

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