In other words, you don’t want anyone to be able to pass the object of your class “by Value” to a function.
To achieve this, override the copy constructor of your class and make it private:
class Restrict{public: Restrict(){} ;private: Restrict( const Restrict &s ){} ;};
Using this technique, if someone tries to pass the object of this class by value, the compiler will generate an error because it will not be able to access the copy constructor required to make a copy of the object. So the only option is to pass the object by reference or by pointer.