2013-11-15 70 views
0

我刚刚开始C++大约一个星期前,最近覆盖了类中的构造函数。使用Code :: Blocks,我已经想出了一个基本的类。我的问题是:为什么我不能简单地将{m_f = f;}与{float m_f = f;}相比?我的编译器不喜欢当我尝试它没有前面的浮动。初学者:快速构造函数Q

class classyClass 
{ 
    public: 
     classyClass(int x=0, int y=0) {m_x = x; m_y = y;} 
     classyClass(float f=0) {float m_f = f;} 

     void setX(int x) { m_x = x; } 
     void setY(int y) { m_y = y; } 

     int getX() const { return m_x; } 
     int getY() const { return m_y; } 

    private: 
     int m_x; 
     int m_y; 
}; 

感谢您的帮助!

+2

您没有任何(私有)成员'浮m_f' ... – jpw

回答

1

我觉得你根本都忘了声明m_f为你的类的数据成员。:)

//... 
    private: 
    int m_x; 
    int m_y; 
    float m_f; 
+0

我发现这张照片后发现了这个......太棒了!谢谢。 –

0
  1. 因为您声明称为m_f在该位置局部变量。

  2. ..哪些将被立即丢弃,因为您不保存在全局内存中 - 它只是一个本地。

  3. ...一个典型的现代编译器会注意到进一步未使用的局部变量的分配并优化这个指令。

可能你的意思是在你的课堂上保存m_f;如果是这样,你必须在内部声明它,就像你对m_xm_y所做的那样。