C++ 同一实例在不同的类C++;

C++ 同一实例在不同的类C++;,c++,class,reference,instance,C++,Class,Reference,Instance,测试h: test.cpp: class A { public: A(); ~A(); }; class B { public: B(); ~B(); }; class C { public: C(); ~C(); }; 如何从类B访问类C的实例 我读了一些关于这篇作文的东西,但不明白它是什么 复制不起作用,因为C类存储某些不断变化的数据。我需要把它们从A级和B级换下来 单身汉也不适合 谢谢 在您的代码中没有任何类C的对象可以共享;您定

测试h:

test.cpp:

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

};

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

};

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

};
如何从类B访问类C的实例

  • 我读了一些关于这篇作文的东西,但不明白它是什么
  • 复制不起作用,因为C类存储某些不断变化的数据。我需要把它们从A级和B级换下来
  • 单身汉也不适合

  • 谢谢

    在您的代码中没有任何类
    C
    的对象可以共享;您定义的类
    C
    的唯一实例是
    a
    的构造函数中的一个局部变量,其他人无法访问该对象(一旦该构造函数完成,该对象将被销毁)

    一种简单的方法是定义一个
    C
    类型的全局变量,并在其他转换单元(或相同单元)中使用它:


    将其作为引用或指针传递?您知道类和类实例之间的区别吗?
    A
    B
    (或两者)应存储对
    C
    的引用。e、 你需要一个指针。甚至可能是a类的声明在哪里?否则我就只能求助于星星了?
    #include "test.h"
    
    A::A()
    {
        C c1;
    }
    A::~A()
    {
    
    }
    
    
    B::B()
    {
        //Here, too, must be "c1"
    }
    B::~B()
    {
    
    }
    
    C::C()
    {
    
    }
    C::~C()
    {
    
    }
    
    // c.h
    class C
    {   public:
        C(int val) : someVal(val) {};
        int someVal;
    };
    extern C c1; // declare c1
    
    // c.cpp: 
    C c1(0);  // define c1 once in the program
    
    // a.cpp
    #include "c.h" // import the declaration of c1 (will not redefine it!)
    A::A() {
        c1.someVal = 5;
    }
    
    // b.cpp
    #include "c.h"
    B::B() {
        c1.someVal = 10;
    }