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 43 44 45 46 | #include <iostream> #include <vector> class Base { public: int integer; Base() : integer(0) {} Base(int i) : integer(i) {} }; class Double: public Base { public: Double(int i) { integer = i * 2; } }; class Triple: public Base { public: Triple(int i) { integer = i * 3; } }; class Multiply: public Base { public: Multiply(int i, int amount) { integer = i * amount; } }; template<typename T, typename... Args> Base* createBaseObject(Args... as) { return new T(as...); }; int main() { std::vector<Base*> objects; objects.push_back(createBaseObject<Double>(2)); objects.push_back(createBaseObject<Triple>(2)); objects.push_back(createBaseObject<Multiply>(3,4)); for(int i = 0; i < objects.size(); ++i) { std::cout << objects[i]->integer << std::endl; } std::cin.get(); return 0; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgQmFzZSB7CnB1YmxpYzoKICAgIGludCBpbnRlZ2VyOwoKICAgIEJhc2UoKSA6IGludGVnZXIoMCkge30KICAgIEJhc2UoaW50IGkpIDogaW50ZWdlcihpKSB7fQp9OwoKY2xhc3MgRG91YmxlOiBwdWJsaWMgQmFzZSB7CnB1YmxpYzoKICAgIERvdWJsZShpbnQgaSkgeyBpbnRlZ2VyID0gaSAqIDI7IH0KfTsKCmNsYXNzIFRyaXBsZTogcHVibGljIEJhc2UgewpwdWJsaWM6CiAgICBUcmlwbGUoaW50IGkpIHsgaW50ZWdlciA9IGkgKiAzOyB9Cn07CgpjbGFzcyBNdWx0aXBseTogcHVibGljIEJhc2UgewpwdWJsaWM6CiAgICBNdWx0aXBseShpbnQgaSwgaW50IGFtb3VudCkgeyBpbnRlZ2VyID0gaSAqIGFtb3VudDsgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KQmFzZSogY3JlYXRlQmFzZU9iamVjdChBcmdzLi4uIGFzKSB7CiAgICByZXR1cm4gbmV3IFQoYXMuLi4pOwp9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnZlY3RvcjxCYXNlKj4gb2JqZWN0czsKCiAgICBvYmplY3RzLnB1c2hfYmFjayhjcmVhdGVCYXNlT2JqZWN0PERvdWJsZT4oMikpOwogICAgb2JqZWN0cy5wdXNoX2JhY2soY3JlYXRlQmFzZU9iamVjdDxUcmlwbGU+KDIpKTsKICAgIG9iamVjdHMucHVzaF9iYWNrKGNyZWF0ZUJhc2VPYmplY3Q8TXVsdGlwbHk+KDMsNCkpOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBvYmplY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IG9iamVjdHNbaV0tPmludGVnZXIgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIHN0ZDo6Y2luLmdldCgpOwogICAgcmV0dXJuIDA7Cn0K
-
upload with new input
-
result: Success time: 0s memory: 2964 kB returned value: 0
4 6 12


