gpt4 book ai didi

c++ - 在 C++ 中重载插入运算符

转载 作者:太空狗 更新时间:2023-10-29 20:49:07 24 4
gpt4 key购买 nike

我有一个类,我试图在其中重载 << 运算符。由于某种原因,它没有重载。

这是我的 .h 文件:

friend std::ostream& operator<<(std::ostream&, const course &); //course is my class object name

在我的 .cpp 中,我将其作为我的实现:

std::ostream& operator<<(std::ostream &out, const course & rhs){
out << rhs.info;
return out;
}

这应该是正确的,但是当我尝试编译它时,它说 cout << tmp;未在 ostream 中定义。

我在我的 .cpp 和 .h 中包含了 iostream

我一直在努力想弄清楚这个问题。你能看出这有什么问题吗?

编辑:因为我所做的似乎是正确的,这里是我所有的源代码:http://pastebin.com/f5b523770

第46行是我的原型(prototype)

第377行是实现

第 435 行是我尝试编译时失败的地方。

另外,我刚刚尝试在另一台机器上编译它,但它给出了这个错误:

course.cpp:246: error: non-member function 'std::ostream& operator<<(std::ostream&, const course&)' cannot have cv-qualifier
make: *** [course.o] Error 1

最佳答案

您列出的语法是正确的,但重载运算符原型(prototype)必须在类(class)定义中声明才能正常工作。

类(class).h

class course {
public:
friend std::ostream& operator<<(std::ostream&, const course&);
private:
int info;
}

类(class).cpp

std::ostream& operator<<(std::ostream &out, const course &rhs){
out << rhs.info;
return out;
}

关于c++ - 在 C++ 中重载插入运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com