-1
friend関数とコンストラクタを使用して値を初期化するために2つの複素数を追加しようとしていますが、 '未定義のcomplex1 :: complex1()'参照があります。friend関数を使用して複素数について
#include<iostream>
using namespace std;
class complex1
{
float real,img;
public:
complex1();
complex1(float a,float b)
{
real=a;
img=b;
}
friend complex1 sum(complex1,complex1);
friend void display(complex1);
};
complex1 sum(complex1 c1,complex1 c2)
{
complex1 c3;
c3.real=c1.real+c2.real;
c3.img=c1.img+c2.img;
return c3;
}
void display(complex1 c)
{
cout<<c.real<<"+j"<<c.img;
}
int main()
{
complex1 c1(100.9,200.9);
complex1 c2(50.9,50.9);
complex1 c=sum(c1,c2);
display(c); //display and sum is given directly because it is friend
return 0;
}
'complex1のC = SUM(C1、C2);'あなたは) '何の実装(' complex1を(持っていないデフォルトのコンストラクタ、とC 'を構築しています;あなたのクラスで)。次に、関数 'sum'でそれを使用しています。また、定義されていない 'complex1'型で' operator = 'を使用しています。 – Fureeish
@Fureeish 'operator ='は大したことではありません。これはコンパイラによって作成され、コピーコンストラクタまたはデストラクタを定義する必要がないため、3のルールを破ることはありません。 –
@FantasticMrFox正しい。コンテキストの場合と同じようにコメントを残しておきます – Fureeish