用静态成员声明一个类是否有任何问题,该静态成员是 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/