当前位置:  开发笔记 > 编程语言 > 正文

在头文件中使用std

如何解决《在头文件中使用std》经验,为你挑选了1个好方法。

是否有任何选项在头文件中使用std而不使用任何#include语句?我在头文件中有一个类如下;

class Sequence{
private:
    std::string sequence;
    unsigned length;
public:
    /* Constructors */
    Sequence (void);
    Sequence (std::string, unsigned);
    Sequence (const Sequence &);

    /* Destructor Definition */
    ~Sequence(){}

    /* Overloaded Assignment */
    Sequence & operator
        = (const Sequence &seq)
    {
        sequence = seq.sequence;
        length = seq.length;
        return *this;
    }

    /* Setter and Getter Functions */
    void setSequence(std::string);
    void setLength(unsigned);
    std::string getSequence(void);
    int getLength(void);
};

如果不包含iostream,则无法正确编译.但是,我在相关问题中阅读了一些注释,其中我们不应在头文件中包含库和另一个头文件.所以?



1> eerorika..:

如果在您自己的标题A中,您依赖于类型定义或来自另一个标题B的函数声明(无论是标准标题还是其他标题),那么您必须在标题A中包含标题B.

一般来说,你无法避免它.在某些情况下,您可能只依赖于类型声明,在这种情况下,您可以通过使用前向声明来避免包含该定义.但是,这不适用于标准库中的类型,因为它们位于名称空间中,您可能不会声明任何内容.

如果不包含iostream,则无法正确编译

实际上,你的班级定义取决于.它可能包含但不能依赖于此.相反,包括,因为您使用在那里定义的类型(std::string).

我们不应该在头文件中包含库和另一个头文件.

您必须包含所依赖的所有标头,无论它们是否来自库.包括库头和其他头文件没有任何问题.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有