gpt4 book ai didi

c++ - 如何禁止临时工

转载 作者:IT老高 更新时间:2023-10-28 11:53:12 25 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/13159739/

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