繁体   English   中英

在C ++中的函数声明中引用成员变量?

[英]Reference to Member Variable in Function declaration in C++?

我正在尝试做类似以下的事情:

class FOO {
 void bar(int& var = m_var) {
   // ....
 }
 int m_var;
};

为什么不编译? 他们为什么不把这个编程成语言呢? 有没有办法模仿这种行为?

这是不允许的,因为m_var是一个成员变量,需要通过该对象进行访问。
如果m_var是类的静态成员,它将成功编译

一个简单的解决方法是通过bar()调用具有相同名称或其他成员函数的重载函数(这是一个成员函数并且可以访问m_var )并通过引用将m_var作为参数传递。它将具有您想要实现的相同效果。

我同意,这是语言的限制。 它可以毫无困难地实现到编译器中(以我的拙见)。

如果你想要这种行为,你必须写:

class FOO 
{
    void bar(int& var) { ... }
    void bar() { this->bar(m_var); }

    int m_var;
};

如果您担心它,任何半合适的编译器都会内联额外的函数调用。

一种解决方案是使用静态变量,它们将充当占位符:

 class FOO 
    {
    private:
        static int _ph_m_var;
        void bar(int& var = _ph_var)
        {
              if(&var == &_ph_var) { // Default }
        }
};

将m_var声明为静态const。 它将编译并运行。

static const int m_var应该可以解决问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM