У меня есть два обьекта в с++ , но при этом один внутри другого.
class obj_el{
void set_a(arg){
code...
}
};
class obj {
public:
int a;
obj_el b;
};
obj d;
d.b.set_a(arg);
При вызове последней строки нужно сделать так, чтобы d.a = arg
.
Но как мне получить доступ к родительскому обьекту обьекта b?
Можго ли в обьект b передать сам d и через это изменить?
class obj_el{
obj_el(obj*p){ pptr = p}
void set_a(arg){
p->a =arg;
}
obj* pptr;
};
class obj {
public:
obj():b(this){}
int a;
obj_el b;
};
obj d;
d.b.set_a(arg);
Ну, костыль присобачить можно, хотя лучше бы так не делать: https://ideone.com/qkgwT9
#include <iostream>
#include <cstddef>
using namespace std;
class obj_el {
obj_el() {}
friend class obj;
public:
void set_a(int arg);
};
class obj {
public:
int a;
obj_el b;
};
void obj_el::set_a(int arg) {
((obj*)((char*)this - offsetof(obj, b)))->a = arg;
}
int main() {
obj d;
d.b.set_a(42);
cout << d.a << endl;
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Собираю либу curlppБеру пример сборки с appveyor, но не могу понять как добавить либу curl в проект
С перемещением камеры в мире проблем не было (просто оффсетим x и y), но систему масштабирования не знаю как сделать
Возникла ситуация с конфликтом имени переменной функции и менем функции этого класса, отсюда и вопросВараинт 1:
У меня есть функция, которая возвращает QPolygonF, который мне нужно нарисовать и заполнить каким-нибудь цветомГугл выдал функцию отрисовки линии,...