%module smart_pointer_overload #ifdef SWIGLUA // lua only has one numeric type, so some overloads shadow each other creating warnings %warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) test; #endif %inline %{ struct Foo { int x; int test(int y) { y = 0; return 1; } int test(double y) { y = 0; return 2; } int test(char *s) { s = 0; return 3; } }; class Bar { Foo *f; public: Bar(Foo *f) : f(f) { } Foo *operator->() { return f; } }; %}