C++ c++--direct——非成员函数体中类成员的访问

C++ c++--direct——非成员函数体中类成员的访问,c++,class,friend,class-members,non-member-functions,C++,Class,Friend,Class Members,Non Member Functions,下面的例子显然是错误的,但我想知道是否有可能实现下面这样的目标 extern int return_value(); class A { private: int k = 1; public: friend int return_value(); }; int return_value() { return k; } 我知道如果不将类A的实例传递到函数return\u value()asreturn\u value(A&A)中,然后作为A.k访问变量,我就无法执行以

下面的例子显然是错误的,但我想知道是否有可能实现下面这样的目标

extern int return_value();

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

int return_value()
{
    return k;
}
我知道如果不将类A的实例传递到函数
return\u value()
as
return\u value(A&A)
中,然后作为
A.k
访问变量,我就无法执行以下操作


注意函数
return\u value()
就是一个例子。我想知道,在C++语言的范围内是否有一种方法可以直接访问非成员函数体

AFAIK中的变量,只有两种方法访问类成员(非成员函数)。
  • 或者通过您描述的实例
  • 或者在没有实例iff的情况下,将该成员声明为静态成员。也就是说,它对于该类的所有对象都具有相同的值,并且可以使用class scope操作符直接访问

  • 当然,这是假设作用域允许函数访问类成员。

    如果成员变量不依赖于实例对象,则可以使用静态成员变量。您可能需要读取,然后告诉我们为什么需要这样做。可能还有其他(更好的)解决方案。