我写了一些头文件。我想分别声明名称空间层次结构(为清楚起见),然后声明函数和类。对我来说,它看起来像是文档中的目录。对我而言,这将非常方便:在一处看到名称空间的完整层次结构。我这样写:
// Namespaces hierarchy:
namespace Bushman{
namespace CAD_Calligraphy{}
//...
}
// Declarations of classes and functions
class Bushman::CAD_Calligraphy::Shp_ostream{
public:
explicit Shp_ostream(std::ostream& ost);
};
但是MS Visual Studio大喊这种创建头文件的方式。我应该这样写:
namespace Bushman{
namespace CAD_Calligraphy{
class Shp_istream{
public:
explicit Shp_istream(std::istream& ist);
};
}
}
为什么第一个变体不起作用?这是C ++或IDE的限制吗?
PS我的附加问题在这里。
谢谢你。
限制在第9/1节中:“如果类头名称包含嵌套名称说明符,则该类说明符应引用先前直接在该嵌套名称所指向的类或名称空间中声明的类-specifier引用[...]”。换句话说,类别名称的首次出现不能以形式出现Bushman::CAD_Calligraphy::Shp_ostream
。
您可以做的是在层次结构的初始声明中添加前向声明:
// Namespaces hierarchy:
namespace Bushman{
namespace CAD_Calligraphy{
class Shp_ostream;
//...
}
//...
}
// Declarations of classes and functions
class Bushman::CAD_Calligraphy::Shp_ostream{
public:
explicit Shp_ostream(std::ostream& ost);
};
根据标头的组织方式,从人的角度来看,这甚至可能更好:标头以某种定义的索引开始。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句