【发布时间】:2012-10-31 14:00:38
【问题描述】:
对于 Foo 类,有没有办法在不给它命名的情况下禁止构造它?
例如:
Foo("hi");
只有在你给它一个名字的情况下才允许它,如下所示?
Foo my_foo("hi");
第一个的生命周期只是语句,第二个是封闭块。在我的用例中,Foo 正在测量构造函数和析构函数之间的时间。由于我从不引用局部变量,所以经常忘记放入,不小心改变了生命周期。我希望得到一个编译时错误。
【问题讨论】:
-
这对于互斥锁保护也很有用。
-
好吧,你可以在被禁止的地方编写自己的 C++ 编译器,但严格来说,那时它不会是 C++。还有一些像这样的临时对象会很有用的地方,例如从函数返回对象时(例如
return std::string("Foo");) -
不,你不能这样做,对不起
-
根据您的宗教信仰,这可能是宏可以派上用场的情况(通过使用该类型只能通过始终创建变量的宏)
-
看起来更像是我希望我的 LINT 工具捕获的东西,而不是我想通过编译器 hack 在语法上阻止的东西。
标签: c++