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类实例?
- 我读了一些关于构图的内容,但不明白它是什么。
- 复制不起作用,因为C类存储了不断变化的某些数据。我需要从A类和B类改变它们。
- Singleton也不适合
醇>
谢谢!
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;
}