我只是注意到我的程序使用字符串类编译而不包括< string>头.原来,< iostream>包括< ios_base>其又包括< string>.
这是不好的做法,我应该明确地包括< string>?即使只是一个清晰的例子?
假设这适用于不仅仅是< string>头?也许这是具体的实现,或者标准状态为< string>标题通过< ios_base>和< iostream>?确保任何受人尊重和广泛使用的实施将始终包括< string>向< iostream>提供呼叫存在.
解决方法
@H_301_9@ 您应该明确地包含所需的任何标准库头.没有指定其他标准库头文件包含哪些标准库头文件,因此这些细节在编译器之间不同.
一个可以依靠另一个标题包含的标题的情况是,一个标题中的一个类来源于另一个标题中的一个类.例如,< iostream>必须包含< ios_base>因为< iostream>中定义的类别来自< ios_base>中定义的类.