gpt4 book ai didi

c++ - 在 C++ 中编译时强制执行函数调用

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

在 C++ 中是否有一种方法可以在编译时以允许此调用的方式强制执行函数调用:

obj.reset().setParam1(10).setParam2(20);

但是这个会编译失败:

obj.reset().setParam1(10);

我想避免在一个函数中设置所有参数,因为要设置的参数太多;所以我更喜欢使用类似于命名参数习语的东西。

编辑:替代语法可以是:

obj.reset(setParam1(10), setParam2(20));

obj.reset(setParam1(10).setParam2(20));

最佳答案

由于所需的行为必须在编译时出现,因此需要在类型系统中实现。据我所知,这在 C++ 中是不可能的 - 命名参数习语依赖于具有相同返回类型(即被调用对象的类型)的 setter 函数,因此无法阻止对某些方法的调用。

关于c++ - 在 C++ 中编译时强制执行函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25780901/

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