Когда используется dynamic_cast < void * > полезно? [Дубликат]

Используйте функцию re.escape() для этого:

4.2.3 re Содержание модуля

escape (string)

Возвращаемая строка со всеми неалфавитными спицами; это полезно, если вы хотите сопоставить произвольную литеральную строку, которая может иметь в ней метасимволы регулярного выражения.

blockquote>

Простейший пример, поиск любого присутствия предоставленной строки, необязательно сопровождаемого 's', и вернуть объект соответствия.

def simplistic_plural(word, text):
    word_or_plural = re.escape(word) + 's?'
    return re.match(word_or_plural, text)

24
задан 0x499602D2 1 September 2014 в 20:19
поделиться

2 ответа

Одной из распространенных причин является выяснение того, являются ли два интерфейса IA* и IB* фактически указателями на один и тот же базовый объект. Если вам это нужно, используйте актерский состав.

IIRC, даже в случае множественного наследования с повторяющимся не виртуальным основанием возможно иметь два IA* указателя, которые сравнивают неравный, но указывают на один и тот же объект - потому что они указывают на два разных IA подобъекта.

26
ответ дан MSalters 1 September 2014 в 20:19
поделиться

Когда у вас есть что-то вроде:

template<typename X, typename Y>
bool operator==(const X* px, const Y* py) {
     return dynamic_cast<void*>(px) == dynamic_cast<void*>(py);
}
5
ответ дан Pradhan 1 September 2014 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: