gpt4 book ai didi

c++ - 错误 : invalid conversion from "const ..." to "..." error message when using templates

转载 作者:行者123 更新时间:2023-11-28 00:42:43 25 4
gpt4 key购买 nike

所以我想弄清楚 C++ 模板是如何工作的,但我运气不太好。我创建了以下模板:

template<class TValue>
class Value {
public:
virtual ~Value();

inline TValue value() const { return _value; }

virtual int serialize(unsigned char* buffer, int bufferSize) const = 0;

protected:
Value(TValue value, const ValueType& valueType) : _value(value), _valueType(&valueType) {}

private:
TValue _value;
ValueType* _valueType;
};

template<class TValue>
class NumericValue : public Value<TValue> {
protected:
NumericValue(TValue value, const ValueType& valueType) : Value<TValue>(value, valueType) {}
};

然后我创建了一个类:

class U16Value : public NumericValue<u16> {
public:
U16Value(u16 value) : NumericValue<u16>(value, ValueType::U16) {}
}

不幸的是,这不会编译。我在这一行收到一个错误:

Value(TValue value, const ValueType& valueType) : _value(value), _valueType(&valueType) {}

也就是说:

error: invalid conversion from const tnp::ValueType* to tnp::ValueType* [-fpermissive]

有人能告诉我为什么会这样吗?

谢谢。

最佳答案

成员 _valueType 声明为指向非 const 对象 (ValueType*) 的指针,并且您尝试使用 (&valueType) 初始化的指针是指向 const 对象 (const ValueType*) 的指针,因为您引用的是 const 引用。

关于c++ - 错误 : invalid conversion from "const ..." to "..." error message when using templates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com