相关疑难解决方法(0)

什么时候不能将对象转换为引用?

我想从http://code.google.com/p/enhsim编译以下代码行:

enh::eout << enh::setw(26);
Run Code Online (Sandbox Code Playgroud)

gcc给出以下错误:

error: no match for 'operator<<' in 'enh::eout << enh::setw(26)'
Run Code Online (Sandbox Code Playgroud)

但是这个EnhSimOutput类(其中enh::eout是一个实例)确实声明:

EnhSimOutput& operator<< (setw& p);
Run Code Online (Sandbox Code Playgroud)

如果我实现一个按值接受对象的操作版本,这个问题就消失了:

EnhSimOutput& operator<< (setw p);
Run Code Online (Sandbox Code Playgroud)

或者如果我将enh::setw对象创建为本地对象,即:

enh::setw wValue(26);
enh::eout << wValue;
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么gcc不选择运营商的"按引用"版本开头?

编写此代码的开发人员明确地将其编译,但默认gcc拒绝执行此操作.为什么单独声明为局部变量的对象与本地创建的内联之间存在差异?

c++ gcc reference

7
推荐指数
1
解决办法
2530
查看次数

标签 统计

c++ ×1

gcc ×1

reference ×1