[解決済み] No Match for Operator[] (オペレータにマッチするものはありません)
2022-02-11 07:11:12
質問
ソート機能(バブルに似ている)を使って、オブジェクトを渡そうとしています。もし、そのオブジェクトが(アルファベット順に)大きければ、switchはtrueを返し、その前にswitchします。しかし、以下のif文の中でエラーが発生します。
mySort()
しかし、私の理解では、私はオブジェクトの配列を渡しているのですよね?なぜこのようなことが起こるのでしょうか、そしてどうすれば解決できるのでしょうか?
以下はそのドライバです。
#include <iostream>
#include <fstream>
#include <string>
#include "phoneEntry.h"
using namespace std;
void mySort(PhoneEntry &arr, int size)
{
bool inOrder = false;
string temp;
for (int i = size - 1; i > 0 && !inOrder; i--)
{
inOrder = true;
for (int j = 0; j < i; j++)
{
if(arr.alphaGreater(arr[j]))
{
inOrder = false;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
};
int main()
{
const int MAXNUM = 500;
PhoneEntry entry[MAXNUM];
ifstream filezilla;
filezilla.open("phone.txt");
int count = 0;
if(filezilla)
{
while(count < MAXNUM && entry[count].readEntry(filezilla))
{
count++;
mySort(entry[count], count);
}
for(int i = 0; i < count; i++)
{
entry[i].writeEntry(cout) << endl;
}
}
else
{
cout << "404" << endl;
}
return 0;
}
テキストの並べ替え (http://pastebin.com/HE8Rsmbg)
解決方法は?
-
arr
は参照ではなく、次のような配列でなければなりません。PhoneEntry arr[]
-
ソートには、このように単一の要素ではなく、配列全体を渡す必要があります。
mySort(entry, count);
これ以外のコードは問題ないようです。
これはC++的な解決策ではないことを付け加えておきます:C++で配列を管理するのに適した方法は
std::vector<T>
コンテナです。ベクターの良いところは、サイズを渡す必要がないことです。
関連
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] 配列の反復処理に "for...in "を使用するのは、なぜ良くないのでしょうか?
-
[解決済み] Javaでenumを繰り返し処理するためのforループ
-
[解決済み] Bashでの単一行whileループの構文
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された