c++ - 复数类C++的主要功能

标签 c++

我正在为 C++ 做作业,我对这门语言还很陌生。该作业是关于为具有复数根的函数实现牛顿拉夫森方法。我已经实现了代码。

我现在想测试我的代码,但我很难让我的主要功能正常工作,有一些我不理解的概念导致我错误的实现。我将不胜感激一些解释,以便我能更好地理解。谢谢。

这是我的代码示例:

复杂.h

#include<iostream>
#include<cmath>

using namespace std;

class Complex {
    private:
    double r;
    double i;

    public:
    Complex(double real, double imaginary);
    friend Complex operator+(const Complex& c1, const Complex& c2);
    friend ostream& operator<<(ostream& outs, const Complex& number);       
};

复杂.cpp

#include "testComplex.h"

Complex::Complex(double real = 0.0, double imaginary = 0.0) : r(real), i(imaginary) {}
Complex operator+(const Complex& c1, const Complex& c2) {
    Complex result;
    result.r = c1.r + c2.r;
    result.i = c1.i + c2.i;
    return result;
}

主要.cpp

#include <iostream>
#include "testComplex.h"

using namespace std;

int main () {
    Complex x;
    Complex y;
    Complex sum;
    x = Complex(2, 4);
    y = Complex(3, 0);
    sum = x + y;
    cout << "The sum (x + y) is:  " << sum << endl;
    return 0;
}

这是我收到的错误的一部分:

testComplexmain.cc: In function ‘int main()’:
testComplexmain.cc:8:10: error: no matching function for call to ‘Complex::Complex()’
testComplexmain.cc:8:10: note: candidates are:
testComplex.h:15:2: note: Complex::Complex(double, double)
testComplex.h:15:2: note:   candidate expects 2 arguments, 0 provided
testComplex.h:8:7: note: Complex::Complex(const Complex&)
testComplex.h:8:7: note:   candidate expects 1 argument, 0 provided
testComplexmain.cc:9:10: error: no matching function for call to ‘Complex::Complex()’

最佳答案

您没有默认构造函数。双参数构造函数可以作为一个参数使用,因为两个参数都是可选的;但是您必须将默认参数放在 header 中的声明中,而不是源文件中的定义中,以便它们可以从 main 中使用。

就个人而言,我会使用 std::complex 而不是重新发明它。

关于c++ - 复数类C++的主要功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529351/

相关文章:

c++ - 复制构造函数

c++ - gcc 编译的 C++ 中不包含调试符号

python - 如何在 C++ 中操作 pybind11::dict

c++ - C2712 : Cannot use __try in functions that require object unwinding

c++ - 返回右值?或者 : Why does copy constructor get called on `return <expression>` ?

c++ - 如何在汇编中传递参数?

c++ - 在不使用全局变量的情况下从主范围更改函数中的局部变量

c++ - AVX2 收集加载两个整数的结构

c++ - 编译器不将 vector 识别为类成员

java - 让 Java 与 Python、C、C++ 和 Ruby 对话