我将从我的问题开始: 我的问题是当我尝试访问类中某个实例的public
函数时出现分段错误。有关C++中的类和类实例的常见问题
假设我有一个类A
有一堆类实例的它像这样:
class A {
...
public:
class B *B;
class C *C;
};
让我们考虑类A
是我们的“全局”类;也就是说,类A
被发送给我初始化和拥有的每个类。因此,每个类功能都可以调用A
到A->function()
的功能。此外,假设其他实例已经初始化,每个类可以调用属于A
的实例的函数,如下所示:A->B->function()
。到目前为止,一切都很好。我的问题是,当我尝试访问属于A
的其中一个实例的函数时,突然发生段错误。我认为原因是(为什么我问这个问题,因为我不确定),是在实例B
已经初始化之前,类实例A
被发送到类C
。然后在类C
中,我简单地创建一个指针副本(意思是我的类C
有一个名为class A *A
的私有实例A
)。因此,当我第一次创建类C
的实例时,我将它发送给类A
及其所有公共成员,然后C
的构造函数将A
作为本地副本。
Phew。没有提交代码很难做到这一点。所以这是一个问题。说的我班A
功能之一包括:
C *c = new C(this);
和C
构造具有这样的:
C(A *a_val) { a = a_val; }
,同时也包含了一个私有实例指针class A *a;
然后在A
实例化另一个函数B
类。我的C
班级能够使用B
班吗?如果没有(这就是为什么我认为我是违约的),我怎么可能解决这个问题?
谢谢!
对不起,我无法提供实际的代码。这只是非常漫长,我不认为在这里粘贴数百行是必要的。 – Amit
A,B和C之间是否有这种相互依存关系?我怀疑你的问题会随着一些想法和重构而消失。而且,没有代码就很难设想你的问题。如何编写一个小测试程序在这里发布? – MatthewD
您可能对成员正在初始化的顺序有问题,但没有更详细的示例就不清楚。 –