namespace Test
{
class cTest
{
public :
float Temp;
} ;
class cTest2
{
public :
cTest Calculate( )
{
cTest TempTest;
return TempTest;
} ;
} ;
//This class is implemented to show that it's not the namespace location that causes the compile error to occur.
//Used only in Method 2
class cTest3
{
public :
cTest2 TempTest2_Obj;
int ReturnValue;
int TestFunction( )
{
ReturnValue = TempTest2_Obj.Calculate ( ) ; //The compiler looks up the object and finds an entry for Calculate,
//and settles on the 'v' (Or void/no arguments) entry, but somehow it knows
//its return type is of cTest, without name decoration!
return ReturnValue;
} ;
} ;
} ;
int main( )
{
//Method 1 of demonstrating the function selection problem.
/** /
Test::cTest2 TempObj1;
Test::cTest2 TempObj2;
TempObj1 = TempObj2.Calculate();
/**/
//Method 2 of demonstrating the function selection problem.
/**/
Test:: cTest3 TempObj3;
TempObj3.TestFunction ( ) ;
/**/
return 0 ;
} ;
bmFtZXNwYWNlIFRlc3QKewoKICAgIGNsYXNzIGNUZXN0CiAgICB7CiAgICBwdWJsaWM6CiAgICAgICAgZmxvYXQgVGVtcDsKICAgIH07CgogICAgY2xhc3MgY1Rlc3QyCiAgICB7CiAgICBwdWJsaWM6CiAgICAgICAgY1Rlc3QgQ2FsY3VsYXRlKCkKICAgICAgICB7CiAgICAgICAgICAgIGNUZXN0IFRlbXBUZXN0OwogICAgICAgICAgICByZXR1cm4gVGVtcFRlc3Q7CiAgICAgICAgfTsKICAgIH07CgogICAgLy9UaGlzIGNsYXNzIGlzIGltcGxlbWVudGVkIHRvIHNob3cgdGhhdCBpdCdzIG5vdCB0aGUgbmFtZXNwYWNlIGxvY2F0aW9uIHRoYXQgY2F1c2VzIHRoZSBjb21waWxlIGVycm9yIHRvIG9jY3VyLgogICAgLy9Vc2VkIG9ubHkgaW4gTWV0aG9kIDIKICAgICAgICBjbGFzcyBjVGVzdDMKICAgICAgICB7CiAgICAgICAgcHVibGljOgoKICAgICAgICAgICAgY1Rlc3QyIFRlbXBUZXN0Ml9PYmo7CiAgICAgICAgICAgIGludCBSZXR1cm5WYWx1ZTsKCiAgICAgICAgICAgIGludCBUZXN0RnVuY3Rpb24oKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBSZXR1cm5WYWx1ZSA9IFRlbXBUZXN0Ml9PYmouQ2FsY3VsYXRlKCk7IC8vVGhlIGNvbXBpbGVyIGxvb2tzIHVwIHRoZSBvYmplY3QgYW5kIGZpbmRzIGFuIGVudHJ5IGZvciBDYWxjdWxhdGUsCiAgICAgICAgICAgICAgICAJCQkJCSAvL2FuZCBzZXR0bGVzIG9uIHRoZSAndicgKE9yIHZvaWQvbm8gYXJndW1lbnRzKSBlbnRyeSwgYnV0IHNvbWVob3cgaXQga25vd3MKICAgICAgICAgICAgICAgIAkJCQkJIC8vaXRzIHJldHVybiB0eXBlIGlzIG9mIGNUZXN0LCB3aXRob3V0IG5hbWUgZGVjb3JhdGlvbiEKICAgICAgICAgICAgICAgIHJldHVybiBSZXR1cm5WYWx1ZTsKICAgICAgICAgICAgfTsKICAgICAgICB9Owp9OwoKaW50IG1haW4oKQp7Ci8vTWV0aG9kIDEgb2YgZGVtb25zdHJhdGluZyB0aGUgZnVuY3Rpb24gc2VsZWN0aW9uIHByb2JsZW0uCi8qKiAvCiAgICBUZXN0OjpjVGVzdDIgVGVtcE9iajE7CiAgICBUZXN0OjpjVGVzdDIgVGVtcE9iajI7CgogICAgVGVtcE9iajEgPSBUZW1wT2JqMi5DYWxjdWxhdGUoKTsKLyoqLwoKLy9NZXRob2QgMiBvZiBkZW1vbnN0cmF0aW5nIHRoZSBmdW5jdGlvbiBzZWxlY3Rpb24gcHJvYmxlbS4KLyoqLwogICAgVGVzdDo6Y1Rlc3QzIFRlbXBPYmozOwogICAgVGVtcE9iajMuVGVzdEZ1bmN0aW9uKCk7Ci8qKi8KCglyZXR1cm4gMDsKfTs=