gpt4 book ai didi

c++ - 如何禁止临时工

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:05 24 4
gpt4 key购买 nike

对于 Foo 类,有没有办法在不给它命名的情况下禁止构造它?

例如:

Foo("hi");

并且只有在您给它命名时才允许它,如下所示?

Foo my_foo("hi");

第一个的生命周期只是语句,第二个是封闭 block 。在我的用例中,Foo 正在测量构造函数和析构函数之间的时间。由于我从不引用局部变量,所以经常忘记放入,不小心改变了生命周期。我想得到一个编译时错误。

最佳答案

另一个基于宏的解决方案:

#define Foo class Foo

语句 Foo("hi"); 扩展为 class Foo("hi");,这是错误的;但是 Foo a("hi") 扩展为 class Foo a("hi"),这是正确的。

这样做的好处是它与现有(正确的)代码在源代码和二进制文件上都是兼容的。 (这种说法并不完全正确 - 请参阅下面 Johannes Schaub 的评论和随后的讨论:“你怎么知道它与现有代码源代码兼容?他的 friend 包括他的标题并且有 void f() { int Foo = 0; } 以前编译得很好,现在编译错误了!此外,定义类 Foo 的成员函数的每一行都失败了:void class Foo::bar() {}")

关于c++ - 如何禁止临时工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201881/

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