How-To: Returning a Class By Value with Isolator++
Isolator++ has two ways to return stuff for a method. It has the ReturnVal to return values, and ReturnPtr to return pointers to objects. What about returning a class by value?
Though there’s no API (currently), it’s very easy to do. You use the almighty 10lbs hammer known as DoInstead.
Let’s say you have this method:
Address currentAddress = Address::GetAddress();
if (strcmp (currentAddress.GetCity(),“Los Angeles”)==0)
The GetAddress method returns an Address object by value. How can we return our own object?
Let’s create a helper class with a static method with the same signature of GetAddress:
static Address ReturnAddress()
laAddress.SetCity( "Los Angeles");
This class is part of the test project, not the production code. Now, in the test, we’ll fake the static method GetAddress, by calling the ReturnAddress method instead.
// Fake the static method by calling the other method instead
Using the DoStaticOrGlobalInstead, I pass the static method replacement, and a NULL value (which can be a context if needed, but not needed in this case).
Remember that another option, for calling DoInstead on a member function, you’ll use the call the DoMemberFunctionInstead method instead. That’s because it needs the same signature.