【问题标题】:c++ --direct-- access of class members in non-member function bodiesc++ --direct--非成员函数体中类成员的访问
【发布时间】:2013-12-26 06:26:37
【问题描述】:

下面的例子显然是错误的,但是我想知道是否有可能实现类似下面的东西

extern int return_value();

class A {
private:
    int k = 1;
public:
    friend int return_value();
};

int return_value()
{
    return k;
}

我知道如果不将 A 类的实例作为 return_value(A &a) 传递给函数 return_value() 然后作为 a.k 访问变量,我将无法执行以下操作

注意函数return_value() 是一个例子。我想知道在 C++ 语言的范围内是否有办法允许直接访问非成员函数体中的变量

【问题讨论】:

  • 如果成员变量不依赖于实例对象,那么可以使用静态成员变量。
  • 您可能想阅读about the XY problem,然后告诉我们为什么您会想要这个。可能还有其他(更好的)解决方案。

标签: c++ class friend class-members non-member-functions


【解决方案1】:

AFAIK 只有两种方法可以访问类的成员(对于非成员函数)。

  1. 通过您描述的实例。
  2. 或者如果成员声明为静态成员,则没有实例。也就是说,对于该类的所有对象,它具有相同的值,并且可以使用类范围运算符直接访问。

当然这是假设范围允许函数访问类成员。

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 2019-10-16
    • 1970-01-01
    • 2022-01-03
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2010-11-02
    相关资源
    最近更新 更多