0

我基本上有一个循环依赖问题,其中一个函数使用一个对象对象,而该对象使用所述函数。有没有办法在不解决这个问题的情况下解决这个问题?

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

请注意,我理解这个例子很愚蠢,但这个例子只包含“问题的本质”,它出现在更复杂的情况下,我有时不知道我将如何解决它,或者即使它可以解决,而且只要能做到就很方便了。我在问是否有办法在不解决它的情况下做到这一点

4

1 回答 1

3

仅在结构定义中声明构造函数,然后将定义移出结构并将其与函数一起放在结构定义下方

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); }
于 2016-04-26T13:01:03.587 回答