来自运算符强制转换的值不正确

时间:2011-03-08 23:36:42

标签: c++ visual-c++ casting

我正在尝试制作一个浮动包装器(它也会在构造函数中做一些神奇的东西)。

然而,我发现自己有很奇怪的错误。

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操作符,那么我得到随机值。

是否可以对成员进行引用?

1 个答案:

答案 0 :(得分:2)

正如你在评论中所述,你正在将课程传递给vararg函数(我猜它是通过格式化的vararg)。 vararg传递不起作用,因为它传递了类的地址而不是强制类型(它不知道在传递时应该将它强制转换为什么)。

如果您需要使用varargs,则使用Get或显式强制转换是唯一的解决方案。