C++ ‘的不明确重载;运营商>&燃气轮机’;在‘;标准:cin>&燃气轮机';

C++ ‘的不明确重载;运营商>&燃气轮机’;在‘;标准:cin>&燃气轮机';,c++,c++11,operator-overloading,istream,C++,C++11,Operator Overloading,Istream,我在试图获取一些用于编译作业的代码时遇到了问题。我曾经研究过类似的问题(即使是看起来完全相同的问题),但没有一个解决方案有效 我的头文件:“complex.h”: #ifndef COMPLEX_H_INCLUDED #define COMPLEX_H_INCLUDED #include <iostream> #include <cstdlib> using namespace std; class Complex { public: // Consructo

我在试图获取一些用于编译作业的代码时遇到了问题。我曾经研究过类似的问题(即使是看起来完全相同的问题),但没有一个解决方案有效

我的头文件:“complex.h”:

#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCLUDED
#include <iostream>
#include <cstdlib>

using namespace std;

class Complex
{
public:
    // Consructors:
    Complex();
    Complex(double);
    Complex(double, double);

    // Operational Overloads:
    const bool operator == (const Complex&);
    const Complex operator + (const Complex&);
    const Complex operator + (const double&);
    const Complex operator - (const Complex&);
    const Complex operator - (const double&);
    const Complex operator * (const Complex&);
    const Complex operator * (const double&);
    friend ostream& operator << (ostream&, const Complex&);
    friend istream& operator >> (istream&, Complex&);

private:
    double real;
    double imaginary;
};

#endif // COMPLEX_H_INCLUDED
有人有什么想法吗?(我正在使用代码::Blocks 12.11和Ubuntu 13.04,如果有帮助的话。)

这不会调用
Complex
的构造函数,而是创建一个函数的人,该函数接受零参数并返回
Complex
类型的对象。如果要实例化对象,应删除空括号:

Complex aComplex;
这不会调用
Complex
的构造函数,而是创建一个函数的人,该函数接受零参数并返回
Complex
类型的对象。如果要实例化对象,应删除空括号:

Complex aComplex;

问题是,
aComplex
被声明为一个函数!您可能打算编写以下内容之一:

Complex aComplex;
Complex bComplex = Complex();
Complex cComplex{};

寻找“最麻烦的解析”来解释为什么
aComplex
是函数声明。

问题是
aComplex
被声明为函数!您可能打算编写以下内容之一:

Complex aComplex;
Complex bComplex = Complex();
Complex cComplex{};

查找“最烦人的解析”来解释为什么您的
aComplex
是一个函数声明。

Complex aComplex()-这定义了一个函数,而不是一个变量…我很确定错误消息还有更多内容。候选函数是什么?
使用名称空间std将使10%的人愿意使用它。有趣的事实:如果你用clang而不是gcc编译你的程序,你会得到一个警告:空括号被解释为函数声明[-Wvexing parse]
Complex()-这定义了一个函数,而不是一个变量…我很确定错误消息还有更多内容。候选函数是什么?
使用名称空间std会让10%的人愿意使用它。有趣的事实:如果你用clang而不是gcc编译你的程序,你会得到一个警告:空括号被解释为函数声明[-Wvexing parse]哇,我的头撞到墙上好几个小时了,这个问题很容易解决……哇,我已经把头撞在墙上好几个小时了,这个问题很容易解决。。。
Complex aComplex;
Complex aComplex;
Complex bComplex = Complex();
Complex cComplex{};