First a few functions are needed to establish the ground work, specifically copy contructors and the like.
While 'friend' classes and functions could have been used, adding a CGame object or pointer directly to the CMoveGenerator allows for the contruction of building hypothetical moves, e.g. 'What Computer moves are availible if the User moved this way?' (And yeah, I do hear the eye-balls rolling at this point.)
So, for the COwner and CGame class the copy constructor looks like;
| The Copy Constructor | 
| CXxxxx::CXxxxx(const CXxxxx& obj) : Copy initialization list | 
| For each element in array, copy obj.array[element] | 
The '=' operator function works as follows;
| The Equal Operator | 
| const CXxxxx& CXxxxx::operator =(const CXxxxx &obj) | 
| If this is NOT equal the address of obj (&obj)then { Copy obj's data members. For each element in array, copy obj.array[element] } In anycase, return the object reffered to by this. (*this) | 
And finally, a kluge to copy from pointers to objects for the CGame class. I went through a bit of hoop-jumping and pointer manipulation and massaging before settling on this to extract pointer data members to copy to temporary objects. (But then I do not know the complete ins-and-outs of C++.) Much like the operator=() function the only difference is that there is no need to return the object to which this reffers;
| void setGame(CGame* aGame); void setGame(const CGame* aGame); // overloaded to copy-from this | 
| If this is NOT equal the address of aGame (&aGame)then { Copy aGame's data members. For each element in array, copy aGame->array[element] } | 
Note: that there is NO data validation. While this can be added, it might be better to do that in a separate step.
 
 
No comments:
Post a Comment