Мне нужно создать DIVariable
из существующего MDNode
.
Согласно документации , DIVariable
наследуется от MDNode
. Но прямая попытка создания дает ошибку:
error: no matching constructor for initialization of 'llvm::DIVariable'
DIVariable newDIVar(*newMDNode);
^ ~~~~~~~~~~
/root/llvm-7.0.0/include/llvm/IR/DebugInfoMetadata.h:2193:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'llvm::MDNode' to 'const llvm::DIVariable' for 1st
argument
class DIVariable : public DINode {
Я попытался перейти на один уровень дальше и создать DINode
из MDNode
, чтобы посмотреть, работает ли это, что дает похожую ошибку:
error: no matching constructor for initialization of 'llvm::DINode'
DINode newDINode(*newMDNode);
^ ~~~~~~~~~~
/root/llvm-7.0.0/include/llvm/IR/DebugInfoMetadata.h:155:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'llvm::MDNode' to 'const llvm::DINode' for 1st
argument
class DINode : public MDNode {
Эта ошибка не имеет смысла для меня. Как класс, который наследуется от другого, не конвертируется в него неявным образом?