Ich bin gespannt, ob es beim Kompilieren möglich ist, sicherzustellen, dass eine Methode an genau einer Stelle aufgerufen wird.
Beachten Sie, dass es in Ordnung ist, wenn die Funktion mehrmals aufgerufen wird (z. B. in einer Schleife). Sie sollte jedoch nicht in zwei separaten Schleifen aufgerufen werden.
Dies kann in zwei Teile unterteilt werden. Ich bin auch an Lösungen interessiert, die beide Teile abdecken:
(a) Sicherstellen, dass eine Methode an mindestens einer Stelle aufgerufen wird.
(B) Sicherstellen, dass eine Methode an höchstens einer Stelle aufgerufen wird
Ich habe die volle Kontrolle über die Struktur des Codes, und verschiedene Redewendungen, die dieselbe Idee erreichen, sind willkommen.
// class.h
class MyClass {
public:
void my_method();
}
Folgendes sollte nicht kompiliert werden (nie aufgerufen)
#include "class.h"
int main() {
MyClass my_class;
}
Folgendes sollte nicht kompiliert werden (an mehr als einer Stelle aufgerufen)
#include "class.h"
int main() {
MyClass my_class;
my_class.my_method();
while(true) {
my_class.my_method();
}
}
Folgendes sollte kompiliert werden (an genau einer Stelle aufgerufen):
#include "class.h"
int main() {
MyClass my_class;
while(true) {
my_class.my_method();
}
}
__COUNTER__Makro verwenden. So etwas wie static_assert(__COUNTER__ == 0); my_class.my_method();. Der Zähler wird jedoch in jeder Übersetzungseinheit zurückgesetzt, sodass Sie nur einmal überprüfen können, ob die Funktion pro Übersetzungseinheit aufgerufen wird.