C++ ‘的不明确重载;运营商>&燃气轮机’;在‘;标准:cin>&燃气轮机';
我在试图获取一些用于编译作业的代码时遇到了问题。我曾经研究过类似的问题(即使是看起来完全相同的问题),但没有一个解决方案有效 我的头文件:“complex.h”: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
#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标题中的code>将使10%的人愿意使用它。有趣的事实:如果你用clang而不是gcc编译你的程序,你会得到一个警告:空括号被解释为函数声明[-Wvexing parse]Complex()代码>-这定义了一个函数,而不是一个变量…我很确定错误消息还有更多内容。候选函数是什么?使用名称空间std标题中的code>会让10%的人愿意使用它。有趣的事实:如果你用clang而不是gcc编译你的程序,你会得到一个警告:空括号被解释为函数声明[-Wvexing parse]哇,我的头撞到墙上好几个小时了,这个问题很容易解决……哇,我已经把头撞在墙上好几个小时了,这个问题很容易解决。。。
Complex aComplex;
Complex aComplex;
Complex bComplex = Complex();
Complex cComplex{};