声明为静态类成员的 C++ 类

标签 c++ oop static

用静态成员声明一个类是否有任何问题,该静态成员是 header 中的另一个类。例如:

class Stat
{
public:
    int avar;
    Stat();
};

class Test
{
public:
    static Stat stat;
};

我担心它可能会导致问题的原因是它看起来与在 header 中声明全局变量非常相似。如果包含在两个 cpp 文件中,全局将在两个文件中声明,从而导致错误。

上面示例中的“stat”仍然只需要在两个与全局相同的 cpp 文件之间创建一次,那么编译器如何处理一种情况而不处理另一种情况,或者它不能处理的答案是什么?

最佳答案

答案是您正在声明静态(就像您可以声明全局一样)。 但是你应该只在 cpp 文件中定义它。

在 .h 中:

extern int myGlobal;
class A
{
  static int myStaticMember;
};

在 .cpp 中:

int myGlobal = 42;
int A::myStaticMember = 42;

关于声明为静态类成员的 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298488/

相关文章:

c++ - 从多个 C++ 文件构建 .so 文件并使用它

c++ - 如何从另一个线程的 cpp 代码同步调用 qml 信号处理程序?

arrays - Matlab OOP 从对象数组访问属性

Java:确定静态方法是从实例调用还是静态调用

javascript - 自动版本化图像链接在 css 和 javascript 文件中?

javascript - 模仿 javascript 类中的静态属性

c++ - Strtok 和 Char*

c++ - OpenMP:为什么这个应用程序有时会扩展?

python - 使用 __init__() 方法理解 Python super()

java - 如果所有对象都返回 false,如何触发某些内容