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 | #include<iostream> #include<vector> using namespace std; struct myApp; struct myConsole { typedef void (myApp :: * MemFunType) (const std::vector<std::string> &); void addCommand( std::string command, MemFunType fn ); }; struct myApp { void TestFn( const std::vector<std::string> & args ) { cout << " TestFn" << endl; for(std :: vector<std::string> :: const_iterator i = args.begin(); i!=args.end(); i++) { cout << *i << endl; } } void TestFnBackwards( const std::vector<std::string> & args ) { cout << " TestFnBackwards" << endl; for(std :: vector<std::string> :: const_reverse_iterator i = args.rbegin(); i!=args.rend(); i++) { cout << *i << endl; } } static myApp & getSingleton(); } ma; myApp& myApp :: getSingleton() { return ma; } void myConsole :: addCommand( std::string , MemFunType fn ) { vector<string> words; words.push_back("hello"); words.push_back("world"); myApp &ma = myApp :: getSingleton(); (ma.*fn)(words); } int main() { myConsole m; m.addCommand( "FirstTest", &myApp::TestFn ); m.addCommand( "FirstTest", &myApp::TestFnBackwards ); } |
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBteUFwcDsKCnN0cnVjdCBteUNvbnNvbGUKewogICAgICAgIHR5cGVkZWYgdm9pZCAobXlBcHAgOjogKiBNZW1GdW5UeXBlKSAoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICYpOwogICAgICAgICAgICB2b2lkIGFkZENvbW1hbmQoIHN0ZDo6c3RyaW5nIGNvbW1hbmQsIE1lbUZ1blR5cGUgZm4gKTsKfTsKCnN0cnVjdCBteUFwcCB7CiAgICAgICAgdm9pZCBUZXN0Rm4oIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmIGFyZ3MgKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICIgVGVzdEZuIiA8PCBlbmRsOwogICAgICAgICAgICAgICAgZm9yKHN0ZCA6OiB2ZWN0b3I8c3RkOjpzdHJpbmc+IDo6IGNvbnN0X2l0ZXJhdG9yIGkgPSBhcmdzLmJlZ2luKCk7IGkhPWFyZ3MuZW5kKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBjb3V0IDw8ICppIDw8IGVuZGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZvaWQgVGVzdEZuQmFja3dhcmRzKCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJiBhcmdzICkgewogICAgICAgICAgICAgICAgY291dCA8PCAiIFRlc3RGbkJhY2t3YXJkcyIgPDwgZW5kbDsKICAgICAgICAgICAgICAgIGZvcihzdGQgOjogdmVjdG9yPHN0ZDo6c3RyaW5nPiA6OiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGkgPSBhcmdzLnJiZWdpbigpOyBpIT1hcmdzLnJlbmQoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgKmkgPDwgZW5kbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3RhdGljIG15QXBwICYgZ2V0U2luZ2xldG9uKCk7Cn0gbWE7Cm15QXBwJiBteUFwcCA6OiBnZXRTaW5nbGV0b24oKSB7CiAgICAgICAgcmV0dXJuIG1hOwp9Cgp2b2lkIG15Q29uc29sZSA6OiBhZGRDb21tYW5kKCBzdGQ6OnN0cmluZyAsIE1lbUZ1blR5cGUgZm4gKSB7CiAgICAgICAgdmVjdG9yPHN0cmluZz4gd29yZHM7CiAgICAgICAgd29yZHMucHVzaF9iYWNrKCJoZWxsbyIpOwogICAgICAgIHdvcmRzLnB1c2hfYmFjaygid29ybGQiKTsKICAgICAgICBteUFwcCAmbWEgPSBteUFwcCA6OiBnZXRTaW5nbGV0b24oKTsKICAgICAgICAobWEuKmZuKSh3b3Jkcyk7Cn0KCmludCBtYWluKCkgewogICAgICAgIG15Q29uc29sZSBtOwogICAgICAgIG0uYWRkQ29tbWFuZCggIkZpcnN0VGVzdCIsICZteUFwcDo6VGVzdEZuICk7CiAgICAgICAgbS5hZGRDb21tYW5kKCAiRmlyc3RUZXN0IiwgJm15QXBwOjpUZXN0Rm5CYWNrd2FyZHMgKTsKfQ==
-
upload with new input
-
result: Success time: 0.02s memory: 2860 kB returned value: 0
TestFn hello world TestFnBackwards world hello


