【发布时间】:2012-06-02 12:53:17
【问题描述】:
我正在尝试为类重载 NumExpr 类,并且有我想要输出的私有变量number。所以他们在这里:
NumExpr::NumExpr( string n ) {
number = atoi( n.c_str() );
}
string NumExpr::name() {
return "num";
}
ostream & operator<<(ostream &s, const NumExpr &num) {
s << num.number;
return s;
}
我将它设为友元函数,以便它可以访问私有变量
class NumExpr : public Expr {
public:
NumExpr( string v );
string name();
private:
int number;
friend ostream& operator<<(ostream &s, const NumExpr &num);
};
但是我得到了这个错误
./ast/Expr.cpp: 在函数 ?std::ostream& 运算符
我已经搜索过这个错误,人们似乎遇到了同样的问题,但我的似乎看起来像是人们给出的解决方案。是我在做一些根本性的错误,还是我不知道有一些语法恶作剧?
感谢您的帮助!
【问题讨论】:
-
This works fine 只要您使用正确的构造函数创建对象
NumExpr。 -
它编译:ideone.com/aZTvQ。你能告诉我们调用代码吗?
-
有趣!我还没有添加函数的调用代码。它只是新制作的并且有问题而无需我打电话给它。顺便说一句,如果有帮助的话,我在 linux 上使用 g++ 命令。 @Naveen 嗯,这看起来像是我将如何实例化课程,不知道为什么它在我这边不起作用。
标签: c++ operator-overloading overloading