我正在尝试在Eclipse Indigo中调试C++程序.该项目使用autotools/configure(和相应的插件)作为构建系统.
成功构建后,我在项目浏览器中右键单击二进制文件并选择"Debug As".然后我使用文件浏览器选择二进制文件.单击"Debug"然后打开一个对话框,其中只显示"程序不是可识别的可执行文件".
有任何想法吗?
我想在全局命名空间中定义二元运算符.运算符处理在另一个名称空间中定义的类,并且运算符应该可以访问该类的私有成员.我遇到的问题是,当我在类定义中将它作为朋友时,我不知道如何扩展该全局运算符的范围.
我尝试过类似的东西:
namespace NAME
{
class A {
public:
friend A ::operator * (double lhs, const A& rhs);
private:
int private_var;
};
}
A operator * (double lhs, const A& rhs)
{
double x = rhs.private_var;
...
}
Run Code Online (Sandbox Code Playgroud)
编译器(g ++ 4.4)不知道如何处理它.看来就行了
friend A ::operator * ()
Run Code Online (Sandbox Code Playgroud)
被评估为(伪代码)
(A::operator)
Run Code Online (Sandbox Code Playgroud)
代替
(A) (::operator)
Run Code Online (Sandbox Code Playgroud)
如果我在运算符的声明中省略了::编译工作,但运算符在命名空间NAME中而不在全局命名空间中.
在这种情况下,如何限定全局命名空间?