【问题标题】:How do I use public member variable outside class?如何在课外使用公共成员变量?
【发布时间】:2020-04-10 01:06:54
【问题描述】:
class A {
   public:
     int VARIABLE = 0;
};

如何在另一个类的函数中使用公共变量?在 Java 中,可以使用类名和点运算符来访问公共变量。 C++中有类似的东西吗?

【问题讨论】:

  • 你确定你不是在谈论 Java 中的 static 变量吗?
  • 是的。但即使是没有 static 关键字的公共变量也可以这样访问。虽然这在 Java 中不合适。
  • class C { public int n; } – 你想通过C.n访问它???假设你的意思是反过来,通过对象访问静态变量......
  • "即使是没有 static 关键字的公共变量也可以像 [in java] 那样访问" - 不是通过类名。你在 java 中也需要一个实例。
  • @Ted Lyngmo 对不起,你是对的。我在考虑类实例。

标签: c++ public


【解决方案1】:

我认为您指的是静态成员。在 C++ 中,它是这样完成的:

// A.h
class A {
   public:
     static int VARIABLE = 0;
};


// B.h
#include "A.h"

class B {
  public:
    void foo() {
      A::VARIABLE = 5; // < here
    }
};

总结一下cmets,你要找的算子就是Scope Resolution Operator:

【讨论】:

  • 你可以完全一样的方法,我已经更新了答案
  • 请注意,您确实需要在一个 TU 中定义该静态变量才能使用它。或者你可以在 C++17+ 中将其设为 inline
  • 顺便说一句,也许您指的是嵌套类,所以您可以从内部类中访问超类成员?如果是这样,你不能在 C++ 中这样做,你必须以某种方式传递对象
  • @AbdelAleem 是scope resolution operator
  • 它是范围解析运算符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2012-08-06
相关资源
最近更新 更多