C++ C+;中的更多类和外部变量+;

C++ C+;中的更多类和外部变量+;,c++,class,global,extern,C++,Class,Global,Extern,我在将文件链接到一起时遇到一些问题。我正在使用一些类: 文件A.h中的A类标题 class A { public: B someVariable; //there is class B used!! int number; }; class B { public: void someMethod(); }; 文件B.h中的B类标题 class A { public: B someVariable; //there is class B used

我在将文件链接到一起时遇到一些问题。我正在使用一些类:

文件A.h中的A类标题

class A
{
public:
    B someVariable;    //there is class B used!!
    int number;
};
class B
{
public:
    void someMethod();  
};
文件B.h中的B类标题

class A
{
public:
    B someVariable;    //there is class B used!!
    int number;
};
class B
{
public:
    void someMethod();  
};
B的实施

B::someMethod()
{
    cout << "Value is:" << globalInstanceOfA.number << "\n";
}
有人能帮我吗?

电话线

extern A globalInstanceOfA;
A globalInstanceOfA;
进入一个头文件,为了使用变量
globalInstanceOfA
,必须包含该头文件;这提供了全局变量的声明

线路

extern A globalInstanceOfA;
A globalInstanceOfA;

进入任何cpp文件以提供全局变量的定义。程序中的所有cpp文件中必须只有一个定义。

您应该将“B.h”放在“A.h”之前。您在这里遇到了一个设计错误,并且和B应该永远不认识对方……嗯。
extern
不需要放在标题中。在cpp中没有什么不对的。然而,使用它有一些适度的错误。@Dave将
extern
放在cpp文件中并没有什么错误,但这通常是无用的:一个人需要
extern
在多个cpp之间共享一个全局文件,这就是为什么它通常在一个标题中。不过,我确实同意总的来说“使用globals有点问题”。迂腐的:一个人不需要
extern
在多个CPP之间共享一个全局,他们需要它在一个或多个CPP之间共享一个全局。。。这就是为什么有时在特定的cpp中使用它非常脏/有用的原因。