質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1875閲覧

Visual Studio 2019を使っています。以下のコードをコンパイルするとエラーが出てしまいます。原因が全くわかりませんでしたのでご教授いただけると幸いです。C++学び始めて1週間目の初心者で

jonko

総合スコア15

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/09 07:29

エラーメッセージ
C2280 'std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)': 削除された関数を参照しようとしています

どうやらクラス型オブジェクトの定義・宣言に問題があるようなのですが、どう修正すればよいのか分かりませんでしたので教えていただきたいです。

source

1#include <iostream> 2#include "Complex.h" 3 4using namespace std; 5 6int main() 7{ 8 double re, im; 9 10 cout << "aの実部 : "; cin >> re; 11 cout << "aの虚部 : "; cin >> im; 12 Complex a(re, im); 13 14 cout << "bの実部 : "; cin >> re; 15 cout << "bの虚部 : "; cin >> im; 16 Complex b(re, im); 17 18 Complex c = -a + b; 19 20 b += 2.0; 21 c -= Complex(1.0, 1.0); 22 Complex d(b.get_re(), c.get_im()); 23 24 cout << "a = " << a << '\n'; 25 cout << "b = " << b << '\n'; 26 cout << "c = " << c << '\n'; 27 cout << "d = " << d << '\n'; 28 29 cout << a; 30} 31

header

1コード#pragma once 2 3#include <iostream> 4 5 6//====複素数クラス====// 7class Complex { 8 double re; //実部 9 double im; //虚部 10 11public: 12 Complex(double r = 0, double i = 0) : re(r), im(i) { } //コンストラクタ 13 14 double get_re() const{ return re; } //実部を返す 15 double get_im() const{ return im; } //虚部を返す 16 17 Complex operator+() const { return *this; } //単項+演算子 18 Complex operator-() const { return Complex(-re, -im); } //単項-演算子 19 20 //---- 複合代入演算子+= ----// 21 Complex& operator+=(const Complex& x) { 22 re += x.re; 23 im += x.im; 24 return *this; 25 } 26 27 //---- 複合代入演算子-= ----// 28 Complex& operator-=(const Complex& x) { 29 re -= x.re; 30 im -= x.im; 31 return *this; 32 } 33 34 //---- 等価演算子== ----// 35 friend bool operator==(const Complex& x, const Complex& y) { 36 return x.re == y.re || x.im == y.im; 37 } 38 39 //---- 等価演算子!= ----// 40 friend bool operator!=(const Complex& x, const Complex& y) { 41 return !(x == y); 42 } 43 44 //---- 2項+演算子 ----// 45 friend Complex operator+(const Complex& x, const Complex& y) { 46 return Complex(x.re + y.re, x.im + y.im); 47 } 48 49 friend Complex operator+(double x, const Complex& y) { 50 return Complex(x + y.re, y.im); 51 } 52 53 friend Complex operator+(const Complex& x, double y) { 54 return Complex(x.re + y, x.im); 55 } 56}; 57 58//---- 出力ストリームsにxを挿入 ----// 59inline std::ostream& operator<<(std::ostream s, const Complex& x) 60{ 61 return s << '(' << x.get_re() << ", " << x.get_im() << ')'; 62}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

inline std::ostream& operator<<(std::ostream s, const Complex& x)

std::ostream sが参照でないためコピー構築が働いてしまっているが
std::ostreamのコピーは禁止されている。

という状況です。

std::ostream& sにしコピーを抑制することで改善するでしょう

投稿2021/05/09 07:35

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jonko

2021/05/09 07:39

細かい部分を見落としていたことに驚いています。 解答ありがとうございました。無事解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問