How to use assert to ensure that a function is executed only once in C++

1 Answer

0 votes
#include <iostream>
#include <assert.h>

class Example {
    private: 
        int x, y;
        bool initialize;
    public:
        Example() {
           initialize = false; 
        };

        void init(int _x, int _y)  { // executed only once 
            assert(initialize == false);
            x = _x;
            y = _y;
            initialize = true;
        }
        
        void show() {
            std::cout << x << " " << y << "\n";
        }
};
      
 
int main() {
    Example obj;

    obj.init(67, 128);
    obj.show();
    
    obj.init(90, 5); // void Example::init(int, int): Assertion `initialize == false' failed.
}

    
    
/*
run:
    
67 128
test.cpp:14: void Example::init(int, int): Assertion `initialize == false' failed.
Aborted
    
*/

 



answered Sep 17, 2024 by avibootz
...