По сути, у меня есть проблема циклической зависимости, когда функция использует объектный объект, а объект использует указанную функцию. Есть ли способ решить эту проблему, не обходя его?
//function that uses struct
void change_weight(Potato* potato,float byX) { potato->weight+=byX; }
//said struct that uses said function
struct Potato
{
float weight=0.0;
Potato(float weightin) { change_weight(weightin); }
};
Обратите внимание, что я понимаю, что этот пример глуп, но этот пример содержит только «суть проблемы», которая возникает в гораздо более сложных ситуациях, когда я иногда не знаю, как мне обойти это, или даже если это можно обойти и было бы очень удобно просто сделать это. Я спрашиваю, есть ли способ сделать это без работать вокруг этого.
Только объявлять конструктор в определении структуры, затем переместите определение из структуры и поместите его вместе с функцией, ниже определение структуры:
struct Potato
{
float weight=0.0;
Potato(float weightin); // Only declare constructor
}
//function that uses struct
void change_weight(Potato potato,float byX) { potato.weight+=byX; }
// Define the constructor
Potato::Potato(float weightin) { change_weight(*this, weightin); }
Других решений пока нет …