确保在编译时在一个位置恰好调用了一个方法

 收藏

我很好奇能否在编译时确保在一个地方恰好调用一种方法。

请注意,如果函数被多次调用(例如在一个循环中)是可以的-但是不应在两个单独的循环中调用该函数。

这可以分为两部分,我也对涵盖这两部分的解决方案感兴趣: (a)确保在至少一个地方调用一种方法 (b)确保最多调用一个方法

我对代码的结构拥有完全的控制权,欢迎实现相同想法的不同习惯用法。

// class.h

class MyClass {
  public:
    void my_method();
}

以下内容不应编译(从不调用)

#include "class.h"

int main() {
  MyClass my_class;
}

以下内容不应编译(在多个位置调用)

#include "class.h"

int main() {
  MyClass my_class;
  my_class.my_method();
  while(true) {
    my_class.my_method();
  }
}

以下应编译(恰好在一个地方调用):

#include "class.h"

int main() {
  MyClass my_class;
  while(true) {
    my_class.my_method();
  }
}
回复