mercredi 12 juillet 2023

Is there any way to prevent calling a specific function in certain part of code in C++

I'm currently working on implementing a module, which consist of three functions including Init(), Process() and Release(). And I'd like to find a way to throw compile error if using std::vector::push_back in Process() and Release() functions. Is there any possible way? Thank all!

class AModule {
 private:
  std::vector<std::int32_t> vector_list;

 public:
  bool Init() override {
    vector_list.push_back(10); // Allow to use push_back function only in Init state
  }
  void Process() override {
    vector_list.push_back(10); // Should throw compile error here
  }
  void Release() override {
    vector_list.push_back(10); // Should throw compile error here
  }
};

I have try using static_assert by wrapping the vector class, but it doesnt work properly.

Aucun commentaire:

Enregistrer un commentaire