c ++ C2440错误无法从'const BWAPI :: UpgradeType'转换为'const BWAPI :: Type *'

时间:2012-08-22 08:27:18

标签: c++ inheritance syntax-error

错误C2440:'=':无法从'const BWAPI :: UpgradeType'转换为'const BWAPI :: Type *'

在这一行

this->generalType = type;   

有什么问题?因为不应该允许UnitType extends Type?

class CombatEvent {

public:
    CombatEvent& setUnitType(const UnitType& type);
    const Type* getGeneralType() const;

private:
    UnitType unitType;
    const Type* generalType;
}

// implementation

CombatEvent& CombatEvent::setUnitType(const UnitType& type) {

    this->generalType = type;
    this->unitType = type;

    return *this;
 }

3 个答案:

答案 0 :(得分:4)

您需要获取地址:

this->generalType = &type;

答案 1 :(得分:0)

您正在指定对指针的引用。正确的代码:

this->generalType = &type; 

您可以查看这些链接

References vs. Pointers

What are the differences between pointer variable and reference variable in C++?

答案 2 :(得分:0)

使用BWAPI类型时存在一个基本问题。

1. BWAPI :: Type是一个模板化类,包含所有类型中常见的所有实用程序函数。没有必要使用它。无法知道它是UnitType还是UpgradeType,它只包含一个整数作为基础类型。

2。无需将BWAPI类型转换为指针或引用。编译器将其解析为整数,对它没什么好看的。您会在代码中的任何地方使用const int&吗?