啊。
#include "logic.h"
...
class A
{
friend ostream& operator<<(ostream&, A&);
...
};
逻辑.cpp
#include "a.h"
...
ostream& logic::operator<<(ostream& os, A& a)
{
...
}
...
当我编译时,它说:
std::ostream& logic::operator<<(std::ostream&, A&)' must take exactly one argument.
有什么问题?
最佳答案
问题是你在类中定义它,
a) 表示第二个参数是隐式的 (this
) 和
b) 它不会做你想做的事,即扩展std::ostream
。
你必须把它定义为一个自由函数:
class A { /* ... */ };
std::ostream& operator<<(std::ostream&, const A& a);
关于c++ - 运算符 << 必须只接受一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744787/