Единственный известный мне способ сделать то, что вы ищете, - это сделать instance()
сам private
, чтобы код, не входящий в MySingleton
, не мог вызвать его напрямую, а затем добавить метод static
в MySingleton
, то есть public
и использует instance()
внутри по мере необходимости, например:
class MySingleton
{
// ...
private:
MySingleton() { /* ... */ }
static MySingleton& instance() { static MySingleton inst; return inst; }
public:
static void do_method() { instance().some_method(); }
};
int main()
{
MySingleton& singleton = MySingleton::instance(); // <-- ERROR
singleton.some_method();
MySingleton::do_method(); // <-- OK
}