Нарушение доступа Dynamic_cast в 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 Я не знаю, актуально ли это.
Я прочитал некоторые вопросы с похожими заголовками, и они кажутся мне не очень актуальными.
Я использую 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 Я не знаю, актуально ли это.
Мобильная версия