从模板类继承时链接错误

时间:2015-12-01 17:27:08

标签: c++

从类模板继承时遇到了一些麻烦。

template < typename T>
class VdpCondition : public Condition {
public:
    virtual T getElem(VehicleDataProvider) = 0;

    bool testCondition(Veins::TraCIMobility* car) {
        cModule* parent = car->getParentModule();
        assert(parent != nullptr);
        ItsG5Middleware* appl = dynamic_cast<ItsG5Middleware*>(parent->getSubmodule("appl"));
        assert(appl != nullptr);
        return (getElem(appl->getDataProvieder()) >= elem);
    }

    T elem;
};

class SpeedCondition : public VdpCondition<boost::units::quantity<boost::units::si::velocity>>{
public:
    SpeedCondition(double speed)
    {
        elem = (speed * boost::units::si::meter_per_second);
    }

    boost::units::quantity<boost::units::si::velocity> getElem(VehicleDataProvider prov) {
        std::cout << prov.speed().value() << std::endl;
        return prov.speed();
    }
};

它编译得很好,没有出现错误,但如果我尝试启动我的应用程序,我会收到链接错误..

undefined symbol: _ZN12VdpConditionIN5boost5units8quantityINS1_4unitINS1_4listINS1_3dimINS1_21length_base_dimensionENS1_15static_rationalILl1ELl1EEEEENS4_INS5_INS1_19time_base_dimensionENS7_ILln1ELl1EEEEENS1_18dimensionless_typeEEEEENS1_18homogeneous_systemINS4_INS1_2si15meter_base_unitENS4_INS1_16scaled_base_unitINS1_3cgs14gram_base_unitENS1_5scaleILl10ENS7_ILl3ELl1EEEEEEENS4_INSH_16second_base_unitENS4_INSH_16ampere_base_unitENS4_INSH_16kelvin_base_unitENS4_INSH_14mole_base_unitENS4_INSH_17candela_base_unitENS4_INS1_5angle16radian_base_unitENS4_INSV_19steradian_base_unitESD_EEEEEEEEEEEEEEEEEEEEvEEdEEEC2Ev

起初,我认为这是因为我使getElem纯虚拟并在模板类中使用它,但我试图删除VdpCondition的所有功能,但仍然会发生错误。 现在我不知道我必须在哪里搜索错误。

也许你看到我做错了什么?我不明白为什么这会编译而不是链接..

0 个答案:

没有答案