c++ 编译器 错误解决方法

 TargetRegisterInfo.h

line759: virtual void eliminateFrameIndex(MachineBasicBlock::iterator MI,
                                   int SPAdj, unsigned FIOperandNum,
                                   RegScavenger *RS = NULL) const = 0;

virtual void First() = 0;纯虚函数,该类为抽象类,不能实例化对象。
加const的意思是说明该成员函数不能修改成员变量的值。

=0表示是纯虚函数
const表示不能在函数内部修改成员变量值

 

纯虚函数

 

-------------------------------------------------------------------------------------

142 make[2]: Leaving directory `/work/user/llvm33/llvm-3.3/llvm-obj/obj/llvm/lib/DebugInfo'
145                  from /work/user/llvm33/llvm-3.3/lib/Target/x86/x86ConvertTox86Pass.cpp
    :17:
146 /work/user/llvm33/llvm-3.3/include/llvm/Target/TargetRegisterInfo.h:759: warning: 'virtual
    void llvm::TargetRegisterInfo::eliminateFrameIndex(llvm::MachineBasicBlock::bundle_iterator<llvm::M
    achineInstr, llvm::ilist_iterator<llvm::MachineInstr> >, int, unsigned int, llvm::RegScavenger*) co
    nst' was hidden
147 /work/user/llvm33/llvm-3.3/lib/Target/x86/x86RegisterInfo.h:76: warning:   by 'virtual vo
    id llvm::x86RegisterInfo::eliminateFrameIndex(llvm::MachineBasicBlock::bundle_iterator<llvm::Machi
    neInstr, llvm::ilist_iterator<llvm::MachineInstr> >, int, llvm::RegScavenger*) const'
148 In file included from /work/user/llvm33/llvm-3.3/lib/Target/x86/x86ConvertTox86Pass.cpp
    :17:
149 /work/user/llvm33/llvm-3.3/lib/Target/x86/x86InstrInfo.h:116: error: cannot declare field
     'llvm::x86InstrInfo::RI' to be of abstract type 'const llvm::x86RegisterInfo'
150 /work/user/llvm33/llvm-3.3/lib/Target/x86/x86RegisterInfo.h:39: note:   because the follo
    wing virtual functions are pure within 'const llvm::x86RegisterInfo':
151 /work/user/llvm33/llvm-3.3/include/llvm/Target/TargetRegisterInfo.h:759: note:  virtual voi
    d llvm::TargetRegisterInfo::eliminateFrameIndex(llvm::MachineBasicBlock::bundle_iterator<llvm::Mach
    ineInstr, llvm::ilist_iterator<llvm::MachineInstr> >, int, unsigned int, llvm::RegScavenger*) const
152 make[3]: *** [/work/user/llvm33/llvm-3.3/llvm-obj/obj/llvm/lib/Target/x86/Release+Asserts/
    x86ConvertTox86Pass.o] Error 1
153 make[3]: *** Waiting for unfinished jobs....

 

原因: llvm33 代码升级后,函数多了个参数。

本来对应的父类虚函数 子类有其实现,

现在的子类代码仍是针对llvm32的,也就是说 子类没有对应实现新的 虚函数。

这样 就会报错:cannot declare field XXX  to be of abstract type  XXXXX
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值