Начну с моей проблемы:
Моя проблема в том, что я получаю ошибку сегментации, когда пытаюсь получить доступ к функции public
внутри экземпляра в классе.
Предположим, у меня есть класс A
, в котором есть несколько экземпляров классов, например:
class A {
...
public:
class B *B;
class C *C;
};
Давайте рассмотрим класс A
как наш "глобальный" класс; то есть класс A
отправляется каждому классу, который я инициализирую и которому владею. Следовательно, каждая функция класса может вызывать функции из класса A
до A->function()
. Кроме того, предполагая, что другие экземпляры были инициализированы, каждый класс может вызывать функции экземпляров, принадлежащих A
, например: A->B->function()
. До сих пор все работало отлично. Моя проблема в том, что у меня внезапно возникает ошибка при попытке получить доступ к функции одного из экземпляров, принадлежащих A
. Я думаю, что причина в том (и почему я задаю этот вопрос, потому что я не уверен), что экземпляр класса A
отправляется в класс C
до того, как экземпляр B
был инициализирован. Затем в классе C
я просто создаю копию указателя (имеется в виду, что у моего класса C
есть личный экземпляр A
, называемый class A *A
). Итак, когда я впервые создаю экземпляр класса C
, я отправляю ему класс A
и все его открытые члены, которые затем конструктор C
делает локальной копией A
.
Уф. Это было трудно сделать без представления кода. Итак, вот вопрос; скажем, одна из моих функций класса A
содержит:
C *c = new C(this);
и конструктор для C
имеет это:
C(A *a_val) { a = a_val; }
и содержит также частный указатель экземпляра class A *a;
затем другая функция в A
создает экземпляр класса B
. Сможет ли мой класс C
использовать этот класс B
? И если нет (именно поэтому я думаю, что я segfaulting), как я мог бы решить эту проблему?
Спасибо!