У меня есть набор полиморфных классов C ++, и все они создаются одним и тем же модулем (Windows DLL). Теперь имея два указателя на такие классы и вызвав typeid
:
SomeCommonBase* first = ...; //valid pointer
SomeCommonBase* second = ...; //valid pointer
const type_info& firstInfo = typeid( first );
const type_info& secondInfo = typeid( second );
Могу ли я сравнить найденные type_info
адреса
if( &firstInfo == &secondInfo ) {
//objects are of the same class
} else {
//objects are of different classes
}
или используйте ==
if( firstInfo == secondInfo ) {
//objects are of the same class
} else {
//objects are of different classes
}
чтобы определить, принадлежат ли объекты (точно) одному и тому же классу или разным классам? Гарантируется ли работа, когда объекты создаются из одного и того же модуля?