MyClass
誰かが別のクラスのデストラクタで (またはコール スタックのどこかでアクティブなデストラクタで) 作成しているかどうかを検出したいと思います。
class MyClass
{
public:
MyClass(){
assert(???what to put here????);
}
}
void f(){
MyClass m; //whether this asserts should be context dependant
}
class OtherClass{
~OtherClass(){
MyClass m; //this should assert
f(); //this should too;
}
}
int main()
{
MyClass m; //this should not assert
f(); //this should also not assert
}
1つの試みは次のとおりです。
assert(!std::uncaught_exception());
ただし、オブジェクトがスコープ外になったために呼び出された場合ではなく、例外のためにデストラクタが呼び出された場合にのみ機能します。