我有以下代码:
class A
{
public:
A();
private:
void slot();
};
第二类B看起来像:
class B
{
public:
B();
private:
// Some stuff...
};
在file1.cpp中,有两个类的静态对象:
static A a;
static B b;
现在在file2.cpp(包含类实现)中,我需要在class A
的slot函数中创建在file1.cpp中创建的对象b
。获得它的最佳方法是什么?
如何使用C ++完成?
答案 0 :(得分:1)
static
表示“此翻译单元的本地”。你要做的事情是不可能的。
替代设计将使用非静态命名空间范围对象,例如:
globals.hpp:
extern A a;
extern B b;
globals.cpp:
#include "globals.hpp"
A a;
B b;
A.cpp:
#include "globals.hpp"
void A::slot(){
//use b
}
您需要小心使用此设计,以确保在A::slot
构建之前不要致电b
。