我正在处理的一个问题是要求我在类体内定义一个 istream 构造函数。让我们称这个类为 Sound。现在这个构造函数在它自己的主体中使用了一个函数。但是该函数应该是非成员函数。我在另一个文件中定义了它,但我在包含类定义本身的标头中声明了它。我已经将标题放在另一个包含非成员函数的文件中。
问题是,非成员函数的参数之一是 Sound 类型,它对 Sound 类型的对象执行操作。
当我在头文件中声明这个函数时,如果我把它放在类定义之前,我会得到一个错误,说对象还没有被定义。
当我将声明放在定义之后时,构造函数现在告诉我它体内的函数是未定义的。
如果我把声明放在类体内,它就变成了一个成员函数。
问题没有明确说明我不能使函数成为成员函数,所以我想知道是否有办法克服这个 catch-22。