General knowledge question regarding classes and class instances in C++
I'll start with my problem:
My problem is that I'm getting a segmentation fault when I try to access a public function within an instance within a class.
Suppose I have a class A that has a bunch of class instances in it like so:
class A {
...
public:
class B *B;
class C *C;
};
Let's consider class A to be our "global" class; that is, class A is sent to every class that I initialize and own. Therefore, every class function can call functions from class A through A->function(). Furthermore, assuming other instances have been initialized, every class can call functions of instances belonging to A, like so: A->B->function(). Up to now, everything worked great. My problem is that I'm suddenly getting a segfault when trying to access a function of one of the instances belonging to A. What I think the reason is (and why I am asking this question, because I am unsure), is that the class instance A is sent to class C before instance B has been initialized. Then in class C, I simply create a pointer copy (meaning my class C has a private instance of A called class A *A). So then when I first create an instance of class C, I send it class A and all of it's public members, which C's constructor then makes the local copy of A.
Phew. That was difficult to do without presenting code. So here's the question; say one of my class A functions contains:
C *c = new C(this);
and the constructor for C has this:
C(A *a_val) { a = a_val; }
while also containing a private instance-pointer class A *a;
then another function in A instantiates the B class. Would my C class be able to use that开发者_如何学运维 B class? And if not (which is why I think I'm segfaulting), how could I possibly solve this issue?
Thanks!
In general your code will segfault if you dereference a pointer to an unitialized variable. From your description, this sounds like what is happening, although it's hard to tell given the lack of an example that fails.
another function in A instantiates the B class. Would my C class be able to use that B class?
Yes. This should work provided you instantianted correctly and passed the pointer to B correctly to C. Also note that it would help to get the terminology a bit more correct in the above question:
another function in A instantiates an object of the the B class. Would my C object be able to use that B object?
I believe the above is what your question really meant to say.
加载中,请稍侯......
精彩评论