【发布时间】:2013-08-30 21:46:23
【问题描述】:
我正在处理的一个问题是要求我在类体内定义一个 istream 构造函数。让我们称这个类为 Sound。现在这个构造函数在它自己的主体中使用了一个函数。但是该函数应该是非成员函数。我在另一个文件中定义了它,但我在包含类定义本身的标头中声明了它。我已经将标题放在另一个包含非成员函数的文件中。
问题是,非成员函数的参数之一是 Sound 类型,它对 Sound 类型的对象执行操作。
当我在头文件中声明这个函数时,如果我把它放在类定义之前,我会得到一个错误,说对象还没有定义。
当我将声明放在定义之后,构造函数现在告诉我它的主体内的函数是未定义的。
如果我把声明放在类体内,它就变成了一个成员函数。
问题没有明确说明我不能使函数成为成员函数,所以我想知道是否有办法克服这个 catch-22。
【问题讨论】:
-
可以帮到你,我也在考虑问题,不过请下次贴代码。考虑问题要容易得多。
-
define an istream constructor inside the class body嗯? -
@Lightness Races in Orbit:我也不清楚……
-
我在 cpp 文件中具有遵循类定义的三个函数。
-
所以我试着把这些放在定义之前,前面是一个结构 Sales_data;宣言。但是当我尝试编译时出现一些错误。错误表示架构重复符号。