考虑这段 C++ 代码:
struct Foo {
float value;
operator float& () {
return this->value;
}
};
int main() {
Foo foo;
foo=1.0f; //Doesn't compile, foo isn't implicitly converted to a float&
return 0;
}
为什么这个无法编译?C++标准中没有包含它的具体原因吗?或者等价物确实存在,只是我使用不正确?
foo
没有隐式转换为float&
。” 你没有告诉它要转换为float&
,你试图将float
赋值给它(实际上是double
,但这不重要)。这是两件不同的事情。 - ildjarn