Позвольте мне объяснить это.
У меня есть два объекта одного класса в моей программе. Я установил сфокусированный объект на третью переменную, которая является указателем. Таким образом, я могу переключать сфокусированный объект с помощью этой третьей переменной-указателя и иметь доступ к каждой части моего кода, не зная, на какой объект сфокусирован.
Это выглядит следующим образом:
class MainClass
{
OtherClass otherClass;
Field fieldA;
Field fieldB;
Field *focusedField = &fieldA;
void someMethod(){
otherClass.othermethod();
focusedField = &fieldB;
otherClass.othermethod();
}
void MainClass()
: otherClass(focusedField);
{
}
}
Но теперь я хочу использовать этот указатель в другом классе, как это:
class OtherClass{
OtherClass(Field *f){
focusedField = f;
}
Field *focusedField;
void otherMethod(){
std::cout << focusedField->getState() << std::endl;
}
}
И это работает частично ...
Первый вызов метода otherMethod использует fieldA, что правильно, но второй вызов, после того как я изменил его на fieldB, все еще использует fieldA.
Я хочу заархивировать, что я передаю focusField в OtherClass, и он меняется, если я изменяю его в MainClass.