如何重载 << 运算符?

How to overload the << operator?

我正在尝试构建自己的 std::vector class 但我无法重载下标 ([]) 和 cout << 运算符。

到目前为止,我已经尝试将 << 运算符定义为 class 的 public 成员,然后将函数的主体写在 class 声明之外。

现在我正在从 iostream 库中获取充满错误的终端页面,我什至不知道从哪里开始浏览它们。

我是 C++ 初学者,不习惯 friend 关键字或 template 关键字。我做错了什么?

template<typename T>
class MyVector {
    private:
        T* Array;
    public:
        T& operator[](int b)
        {
            ...
        }

        std::ostream& output(std::ostream& s) const;
};


std::ostream& operator<<(std::ostream& output, MyVector& A)
{
    int i;
    for(i = 0; i < A.GetDimension(); i++)
    {
        output << A[i] << " ";
    }
    output << "\n";
    return output;
};

你说的对,你只是忘了模板声明:

template <typename T>
std::ostream& operator<<(std::ostream& output, MyVector<T>& A)
{
    int i;
    for (i = 0; i < A.GetDimension(); i++)
    {
        output << A[i] << " ";
    }
    output << "\n";
    return output;
};
template<typename T>
class MyVector{
    ...
    std::ostream& printToStream(std::ostream& output) const {
        int i;
        for (i = 0; i < Dimension; i++) {
            output << Array[i] << " ";
        }
        output << "\n";
        return output;
    }
    ...
};

template<typename T>
std::ostream& operator<<(std::ostream& output, const MyVector<T>& A) {
   return A.printToStream(output);
}