我正在尝试制作一个浮动包装器(它也会在构造函数中做一些神奇的东西)。
然而,我发现自己有很奇怪的错误。
class Foo {
public:
Wrapper();
operator const float& () const { return m_bar; }
operator float& () { return m_bar; }
const float& Get() const { return m_bar; }
float& Get(){ return m_bar; }
private:
float m_bar;
};
如果我使用Get()然后我得到正确的值但是如果我只使用了cast操作符,那么我得到随机值。
是否可以对成员进行引用?
答案 0 :(得分:2)
正如你在评论中所述,你正在将课程传递给vararg函数(我猜它是通过格式化的vararg)。 vararg传递不起作用,因为它传递了类的地址而不是强制类型(它不知道在传递时应该将它强制转换为什么)。
如果您需要使用varargs,则使用Get或显式强制转换是唯一的解决方案。