具有.h和.cpp文件的命名空间中的类

时间:2018-11-03 19:38:26

标签: c++ class syntax

因此,我正在制作Vector STL类的自己的副本。我知道这只是我正在做的事,不切实际。我正在使用Visual Studio。这是我的代码...

myVector.h

namespace  CS52 {
    class  Vector {
    public:
        friend std::ostream& operator<<(std::ostream&, Vector &);
    };
}

myVector.cpp

#include "myVector.h"
#include <fstream>

std::ostream& CS52::Vector::operator<<(std::ostream&, CS52::Vector &)
{
    // TODO: insert return statement here
}

我得到的错误是类“ CS52 :: Vector”没有成员“ operator <<” 谢谢

1 个答案:

答案 0 :(得分:0)

您仅声明此运算符是该类的朋友。

这应该是这样的:

namespace  CS52 {
    class  Vector {
    public:
        friend std::ostream& operator<<(std::ostream&, Vector &);
    };
    std::ostream& operator<<(std::ostream& stream, Vector &v);
}

然后:

namespace  CS52 {
    std::ostream& operator<<(std::ostream& stream, Vector &v)
    {
       return stream;
    }
}