chevron-thin-right chevron-thin-left brand cancel-circle search youtube-icon google-plus-icon linkedin-icon facebook-icon twitter-icon toolbox download check linkedin phone twitter-old google-plus facebook profile-male chat calendar profile-male

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:

bool Person::IsLivingInLA()


         Address currentAddress = Address::GetAddress();

         if (strcmp (currentAddress.GetCity(),“Los Angeles”)==0)


                 return true;



                 return false;


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:

class TestUtil


static Address ReturnAddress()


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.