Без предложения using namespace std;
(которое имеет собственный набор проблем) вам необходимо полностью квалифицировать все iostream
материал.
Это можно увидеть с помощью следующегоПрограмма:
#include <iostream>
class Expression {
private:
std::string expression;
public:
Expression(std::string expression):
expression(expression) { }
// added this bit.
// _/_
// / \
friend std::ostream& operator <<(std::ostream& os, Expression& exp) {
return os << exp.expression; }
};
int main (void) {
Expression e ("Hi, I'm Pax.");
std::cout << e << std::endl;
return 0;
}
, которая печатает:
Hi, I'm Pax.
, как и ожидалось.
И, как указывалось в некоторых комментариях, вы должны передать строкукак const-ссылка:
#include <iostream>
class Expression {
private:
std::string expression;
public:
Expression(const std::string& expression)
: expression(expression) {
}
friend std::ostream& operator <<(std::ostream& os, const Expression& exp) {
return os << exp.expression;
}
};
int main (void) {
Expression e ("Hi, I'm Pax.");
std::cout << e << std::endl;
return 0;
}