Хорошо, извините, если это глупый вопрос. Допустим, у меня есть класс, и я хочу вызвать функцию из этого класса, используя объект внутри этого класса, чтобы что-то изменить в классе. Например:
class Foo;
class Bar{
public:
Bar(Foo *parent): parent(parent) {}
void barClickEvent(){
parent->changeSomething(10);
}
private:
Foo * parent;
};
class Foo {
public:
Foo():bar(this), something(5) {}
void changeSomething(int x){something = x;}
private:
Bar bar;
int something;
};
Я создаю объект типа Foo (который автоматически создает объект типа Bar). Чтобы все Bar имели доступ к функциям в Foo, я передаю указатель на Bar, указывающий на Foo (его родитель). Это самый эффективный способ сделать это?
Причина, по которой я спрашиваю это, заключается в том, что я внедряю нечто подобное для графического интерфейса некоторых программ, например, я могу нажать кнопку на боковой панели, которая, в свою очередь, меняет цвет родительского элемента (основной окно). В этом случае это может быть не так уж и плохо, но как насчет того, когда я хочу изменить всю тему пользовательского интерфейса, и мне нужно вызывать функции во многих объектах от многих родителей. Мне понадобится много указателей, и это может стать немного грязным.
Какие-нибудь предложения о том, как лучше решить такую проблему, как эта?
Спасибо