c++ - Checking if the object passed to a method is "this" -


i'm trying solve following problem:

suppose i'm writing class has method mymethod modifies both *this , argument passed:

class myclass {     //some code here     void mymethod(myclass& other) {         //modify *this , other     } };  

the problem want method nothing when following piece called:

myclass x; x.mymethod(x); 

checking equality not enough, because want able call 2 identical objects.

in more down-to-earth way, example, suppose myclass std::set , mymethod merges 2 sets, emptying other. 2 identical sets can merged, can't empty , fill 1 set @ same time.

how can check this? advice appreciated.

you can compare address of other this:

class myclass {     //some code here     void mymethod(myclass& other) {         if (this != &other) {             //modify *this , other         }     } };  

since pass reference, pointers equal if pass same object function 1 called on.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -