前向声明std::istringstream引发歧义,C++头文件优化最佳实践咨询
C++中std::istringstream前向声明的最佳实践问题
问题描述
我在代码里定义了一个返回std::istringstream类型的函数,为避免在头文件中引入<sstream>,我在头文件顶部添加了前向声明class istringstream;,并将函数返回类型写为istringstream。但在cpp文件中定义该函数时,添加using std::istringstream语句后出现了标识符歧义问题——无法直接使用istringstream,必须显式写为std::istringstream。
我一直遵循“能使用前向声明就不包含完整头文件”的原则,想咨询此场景下的最佳实践是什么?
示例代码
example.h
class istringstream; istringstream myFunction();
example.cpp
#include "example.h" using std::istringstream; std::istringstream myFunction(){} // istringstream is ambiguous
结论(更新)
不推荐前向声明std::istringstream,此行为属于未定义行为。
内容的提问来源于stack exchange,提问作者user18348324
相关产品推荐
相关产品推荐

