次のようなクラスがあるとします。
class OProcess {
...
void Process1();
void Process2(); // call only if Process1 wasn't called
...
}
関数 Process2() は、関数 Process1() がまだ呼び出されていない場合にのみ呼び出すことができます。
コンパイル時に Process クラスが正しく使用されていることを確認する方法はありますか? つまり、 OProcess オブジェクトのインスタンスに対して Process2() の前に Process1() を呼び出すことができる場合、コンパイラはエラーを発生させる必要があります。
PS次のようなコードが存在する可能性があることを理解しています:
if (variable == 1000)
Process1();
Process2();
コンパイラは、Process1() が Process2() の前に呼び出されることを確認できません。しかし、ここでコンパイラーは、変数のいくつかの値に対して Process2() の前に Process1() を呼び出すことができることを確認できます。そして、エラーまたは少なくとも警告を出すために必要です。