不同类C ++中的相同实例

时间:2017-05-08 17:15:16

标签: c++ class reference instance

test.h:

class A
{
public:
    A();
    ~A();

};

class B
{
public:
    B();
    ~B();

};

class C
{
public:
    C();
    ~C();

};

TEST.CPP:

#include "test.h"

A::A()
{
    C c1;
}
A::~A()
{

}


B::B()
{
    //Here, too, must be "c1"
}
B::~B()
{

}

C::C()
{

}
C::~C()
{

}

如何从B类访问C类实例?

  1. 我读了一些关于构图的内容,但不明白它是什么。
  2. 复制不起作用,因为C类存储了不断变化的某些数据。我需要从A类和B类改变它们。
  3. Singleton也不适合
  4. 谢谢!

1 个答案:

答案 0 :(得分:1)

在你的代码中,没有任何可以共享的C类对象;你定义的C类的唯一实例是A的构造函数中的局部变量,并且这个对象是其他人无法访问的(并且一旦这个构造函数完成就会被销毁)。 一种简单的方法是定义一个C类型的全局变量,并在其他翻译单元(或同一单元)中使用它: // c.h C级 { 上市:     C(int val):someVal(val){};     int someVal; }; extern C c1; //声明c1 // c.cpp: C c1(0); //在程序中定义一次c1 // a.cpp #include" c.h" //导入c1的声明(不会重新定义它!) A :: A(){     c1.someVal = 5; } // b.cpp #include" c.h" B :: B(){     c1.someVal = 10; }