我收到此错误
错误C2440:'=':无法从'const BWAPI :: UnitType *'转换为'BWAPI :: Type *'
在这一行
this->generalType = &type;
有什么问题?因为不应该允许UnitType extends Type?
class CombatEvent {
public:
CombatEvent& setType(CombatEventType type);
Type* getGeneralType() const;
private:
UnitType unitType;
Type* generalType;
}
// implementation
CombatEvent& CombatEvent::setUnitType(const UnitType type) {
this->generalType = &type;
this->unitType = type;
return *this;
}
答案 0 :(得分:1)
删除const
。这应该工作。但是,你正在经历价值。您可以改为const UnitType&
。这提高了性能。或者,如果您通过引用传递,也可以删除违规行中的address-of运算符。
答案 1 :(得分:1)
首先,您将const对象的地址分配给指向非const对象的指针。
其次,即使你纠正了这一点,this->generalType = &type
也会存储一个本地函数参数的地址,该参数在退出函数时被销毁。这是一件非常危险的事情。倾斜setUnitType
后,指针指向垃圾。