Нарушение доступа Dynamic_cast в C++C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Нарушение доступа Dynamic_cast в C++

Сообщение Гость »


Я прочитал некоторые вопросы с похожими заголовками, и они кажутся мне не очень актуальными.

Я использую Clang LibTooling, следующий код в ASTVisitor:

virtual bool VisitCXXRecordDecl(CXXRecordDecl *d) { bool b1 = std::is_polymorphic::value; bool b2 = std::is_polymorphic::value; auto dd = Dynamic_cast (d); auto ddd = Dynamic_cast (dd); вернуть истину; } Сработает второе динамическое приведение

"0xC0000005: нарушение прав доступа, местоположение чтения 0x0000000000000004." в VS2017.

Отношения классов находятся здесь http://clang.llvm.org/doxygen/classclan ... dDecl.html.

Изменение на static_cast решит проблему.

b1 и b2 верны. dd успешно выполнен, вот панель «Локальные» в VS2019 перед выполнением второго динамического приведения:

+ d ... clang::CXXRecordDecl * + dd ... clang::NamedDecl * {clang::CXXRecordDecl} На маршруте от NamedDecl до CXXRecordDecl имеется множественное наследование:

class TagDecl: public TypeDecl, public DeclContext, public Redeclarable Я не знаю, актуально ли это.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»