1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include<stdio.h> #include<string> struct Counter { static unsigned int value; Counter& operator ++ (int) { value ++; return *this; } }; unsigned int Counter::value = 0; template <class T> class Singleton { public: Singleton(const std::string &name){ printf("%s CTOR call #%d\n", name.c_str(), s_counter.value); s_counter++; } virtual ~Singleton(){} private: static Counter s_counter; // I want this to be shared by all classes }; // I can only initialize it like this; sadly template<class T> Counter Singleton<T>::s_counter; class MyClass1 {}; class MyClass2 {}; class MyClass3 {}; class MyClass4 {}; int main () { // main code (simplified): Singleton<MyClass1> c1("MyClass1"); Singleton<MyClass2> c2("MyClass2"); Singleton<MyClass3> c3("MyClass3"); Singleton<MyClass4> c4("MyClass4"); } |
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nPgoKc3RydWN0IENvdW50ZXIKewogIHN0YXRpYyB1bnNpZ25lZCBpbnQgdmFsdWU7CgogIENvdW50ZXImIG9wZXJhdG9yICsrIChpbnQpIHsgdmFsdWUgKys7IHJldHVybiAqdGhpczsgfQp9Owp1bnNpZ25lZCBpbnQgQ291bnRlcjo6dmFsdWUgPSAwOwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFNpbmdsZXRvbgp7CnB1YmxpYzoKICAgU2luZ2xldG9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKXsgCiAgICAgIHByaW50ZigiJXMgQ1RPUiBjYWxsICMlZFxuIiwgbmFtZS5jX3N0cigpLCBzX2NvdW50ZXIudmFsdWUpOyAgCiAgICAgIHNfY291bnRlcisrOyAKICAgfSAgIAogICB2aXJ0dWFsIH5TaW5nbGV0b24oKXt9CnByaXZhdGU6CiAgIHN0YXRpYyBDb3VudGVyIHNfY291bnRlcjsgLy8gSSB3YW50IHRoaXMgdG8gYmUgc2hhcmVkIGJ5IGFsbCBjbGFzc2VzCn07CgovLyBJIGNhbiBvbmx5IGluaXRpYWxpemUgaXQgbGlrZSB0aGlzOyBzYWRseQp0ZW1wbGF0ZTxjbGFzcyBUPiAgCkNvdW50ZXIgU2luZ2xldG9uPFQ+OjpzX2NvdW50ZXI7CgpjbGFzcyBNeUNsYXNzMSB7fTsgCmNsYXNzIE15Q2xhc3MyIHt9OyAKY2xhc3MgTXlDbGFzczMge307IApjbGFzcyBNeUNsYXNzNCB7fTsgCgppbnQgbWFpbiAoKQp7Ci8vIG1haW4gY29kZSAoc2ltcGxpZmllZCk6ClNpbmdsZXRvbjxNeUNsYXNzMT4gYzEoIk15Q2xhc3MxIik7ClNpbmdsZXRvbjxNeUNsYXNzMj4gYzIoIk15Q2xhc3MyIik7ClNpbmdsZXRvbjxNeUNsYXNzMz4gYzMoIk15Q2xhc3MzIik7ClNpbmdsZXRvbjxNeUNsYXNzND4gYzQoIk15Q2xhc3M0Iik7Cn0K
-
upload with new input
-
result: Success time: 0.02s memory: 2812 kB returned value: 0
MyClass1 CTOR call #0 MyClass2 CTOR call #1 MyClass3 CTOR call #2 MyClass4 CTOR call #3


