Unique as in ? A bool will only be true or false and to say a monster is unique is kind of a misnomer since all monster classes will be derived from base classes. So perhaps they are unique in their characteristics but at the core code level they are simply identical types.
It would be cool to generate some sort of system that would generate unique monster classes from already known bases or derived's but that is extremely complex code.
You could create a base monster class with base characteristics that they all share and then derive from that base for new monsters. The bool flag would only indicate if their characteristics were alike, however you would have to link the bool to the baseline of their characteristics. Say monster1 starts out with a defense of 5 and monster2 has a defense of 6. When monster1 levels up to level 6 your bool would falsely claim that neither monster was unique if it checked their current characteristics. So you probably want to keep a copy of the starting point or starting values of all monsters and then the bool function would look at those.
Again though if these are derived from the same class you MUST compare attributes only, not types.
This is just a short sample of a way to do it. This will compare the attributes of the two monsters. If either attribute is not exactly the same as the other it will return false.
operator BaseMonster::IsUnique == (BaseMonster &Monster2)
return ((Attack==Monster2.Attack) & (Defense==Monster2.Defense));
The options are:
true & true = true or 1 & 1 = 1
false & true = false or 0 & 1 =0
true & false = false 1 & 0 = 0
false & false = false 0 & 0=0
The only one that might be incorrect is false and false. This might return true since both are false, but I think both must be true for an AND to return true. In this case both are false so while they are identically not true, they are not identically true.
Check the MSVC 6 help file for a good explantion of the available logical operators and their associated truth tables.