Функция использует объект, а объект использует функцию

По сути, у меня есть проблема циклической зависимости, когда функция использует объектный объект, а объект использует указанную функцию. Есть ли способ решить эту проблему, не обходя его?

//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); }
};

Обратите внимание, что я понимаю, что этот пример глуп, но этот пример содержит только «суть проблемы», которая возникает в гораздо более сложных ситуациях, когда я иногда не знаю, как мне обойти это, или даже если это можно обойти и было бы очень удобно просто сделать это. Я спрашиваю, есть ли способ сделать это без работать вокруг этого.

0

Решение

Только объявлять конструктор в определении структуры, затем переместите определение из структуры и поместите его вместе с функцией, ниже определение структуры:

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); }
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]