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

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

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

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

C++

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

Q&A

解決済

1回答

633閲覧

std::vectorに格納した独自クラスのオブジェクトを削除するには(続き)

EXPRESS

総合スコア11

VC++

VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

C++

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

0グッド

0クリップ

投稿2022/09/07 14:19

編集2022/09/07 14:21

前提

1週間前に同様な質問をしたものです。今回のパターンはいかがでしょうか。

実現したいこと

コンパイルエラーになります。コンパイルが通るようにしたいです。

発生している問題・エラーメッセージ

VC++2019

C2676 二項演算子'==';'Test'は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。

該当のソースコード

#include <iostream> #include <vector> class Test { public: Test(int data) : m_iData(data) {} ~Test() {} private: int m_iData; }; class CTest { public: static CTest* GetInstance() { return m_pInstance; } void Add(Test Data) { m_Test.push_back(Data); } void Erase(Test Data) { auto ite = std::find(m_Test.begin(), m_Test.end(), Data); if (ite != m_Test.end()) m_Test.erase(ite); } private: CTest() {} ~CTest() {} static CTest* m_pInstance; std::vector<Test> m_Test; }; ### 試したこと 前回のご回答を参考に二項演算子の処理を追加しましたが、解決しませんでした。 ### 補足情報(FW/ツールのバージョンなど) VC++ 2019

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

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

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

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

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

maisumakun

2022/09/07 14:24

> 前回のご回答を参考に二項演算子の処理を追加しましたが 該当するコードはどれでしょうか?
KoichiSugiyama

2022/09/07 15:17

検索ワード「C++ operator」などで検索すると、膨大なページがヒットしますので、ご自身がわかりやすいと思うサイトを参考にされてみてはどうでしょうか。 もし前回の回答を受けて作成したoperator==が上手く動かないのであったとしても、その状態のコードをここに掲載してアドバイスをもらった方が早く解決するのではないかと思います。
SaitoAtsushi

2022/09/07 15:25

実際に operator== を定義するだけで通るので質問者のどこが間違っているのかは間違っているものを提示されないとわからんですね……。
episteme

2022/09/08 00:19

> 今回のパターンはいかがでしょうか。 前回の解決法で解消しなかったのですか?
EXPRESS

2022/09/08 12:55

ありがとうございます。内容理解しました。お騒がせしました。
guest

回答1

0

ベストアンサー

前回のご回答を参考に二項演算子の処理を追加しましたが、

追加していないから、
「C2676 二項演算子'==';'Test'は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。」
とエラーメッセージが出るのではありませんか?

Testクラスに、
bool operator==(const Test &x) const { return m_iData == x.m_iData; }
を追加してみてください。

投稿2022/09/07 15:28

kazuma-s

総合スコア8224

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問