由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++重载<<错误?
相关主题
请问关于overloading <<私有成员不能用类成员函数修改?
member and friend请教 C++的一个困惑 (operator delete)
[C++ boost::interprocess] 讨论贴面试问题
能否对某个库进行操作符重载?请教一个基本的constructor和destrcutor问题
please help debug this code问题
stl Compare为何需要重载()?小问题
about new operatora question about bitwise operation
c++ 得最基本问题这该不该算std::map的一个bug
相关话题的讨论汇总
话题: ostream话题: stream话题: aaa话题: operator话题: str
进入Programming版参与讨论
1 (共1页)
l***e
发帖数: 480
1
写了个类,也加了operator<<
可等输出时,c< 编译报错:
啥问题?
S**I
发帖数: 15689
2
把<<定义成member function了?

【在 l***e 的大作中提到】
: 写了个类,也加了operator<<
: 可等输出时,c<: 编译报错:
: 啥问题?

l***e
发帖数: 480
3
class aaa {
public:
string str;
int i;
ostream & operator<< (ostream & stream) {
stream << str << " " < return stream;
}
}
OK?
S*********g
发帖数: 5298
4
no.
put << outside of your class definition.

【在 l***e 的大作中提到】
: class aaa {
: public:
: string str;
: int i;
: ostream & operator<< (ostream & stream) {
: stream << str << " " <: return stream;
: }
: }
: OK?

l***e
发帖数: 480
5
<<好像可以定义在类里吧。
S*********g
发帖数: 5298
6
Yes you can. But you need to use it as member function.

【在 l***e 的大作中提到】
: <<好像可以定义在类里吧。
S**I
发帖数: 15689
7
you mean friend nonmember function?

【在 S*********g 的大作中提到】
: Yes you can. But you need to use it as member function.
S*********g
发帖数: 5298
8
If operator<< is defined as class member function,
one cannot call it as std::cout << aa;
aa.operator<<(cout) will be the right way to call it.

【在 S**I 的大作中提到】
: you mean friend nonmember function?
l***e
发帖数: 480
9
通过了,执行正确。
如何定义在类外?
class aaa {
public:
string str;
int i;
}
edge::ostream & operator<< (ostream & stream) {
stream << str << " " < return stream;
}

【在 S*********g 的大作中提到】
: If operator<< is defined as class member function,
: one cannot call it as std::cout << aa;
: aa.operator<<(cout) will be the right way to call it.

S*********g
发帖数: 5298
10
As someone else have said, you usually want to define
it as friend non-member function since you will probably
need to access private/protected informations of class aaa in this function.
class aaa{
private:
string str;
int i;
friend ostream& operator<<(ostream& os, const aaa& a)
{
return os << a.str << " "<< a.i << std::endl;
}
};

【在 l***e 的大作中提到】
: 通过了,执行正确。
: 如何定义在类外?
: class aaa {
: public:
: string str;
: int i;
: }
: edge::ostream & operator<< (ostream & stream) {
: stream << str << " " <: return stream;

l***e
发帖数: 480
11
it's working。
3x。
1 (共1页)
进入Programming版参与讨论
相关主题
这该不该算std::map的一个bugplease help debug this code
关于C++中一个Class的大小 (转载)stl Compare为何需要重载()?
Does this function have memory problem?about new operator
问个C++ virtual function的问题 (转载)c++ 得最基本问题
请问关于overloading <<私有成员不能用类成员函数修改?
member and friend请教 C++的一个困惑 (operator delete)
[C++ boost::interprocess] 讨论贴面试问题
能否对某个库进行操作符重载?请教一个基本的constructor和destrcutor问题
相关话题的讨论汇总
话题: ostream话题: stream话题: aaa话题: operator话题: str