我有一个Vector:
struct vector { double coord[3]; };
我能做到:
Vector v = q; // q is a qvm::vec
但该怎么做:q = v;
?
我发现的唯一方法是qvm::assign (q, v);
。否则编译器会告诉我:
no operator found which takes a right-hand operand of type Vector*.
我按照文档来定义特征(docs)。这可能是允许作业v = q
起作用的原因。
如何做q = v
?(如果可能的话)?
答案 0 :(得分:1)
assign
调用是一种方法(尽管您也可以使用convert_to<T>
)。
原因隐含在FAQ:
的一部分 operator=
的推理完全相同,只能在类型本身内声明。
你可以通过继承来扩展接口,但这会删除POD-ness,这会破坏使用QVM的目的(这是为了避免开销)。