[解決済み] "メンバー関数がすでに定義または宣言されています" - どういう意味ですか?
2022-02-14 08:10:31
質問
私は、いくつかのタスクをリストアップし、日付順に並べるプログラムを書いています。
最後にやったことは、"sort by date"機能を追加したことです。それ以前はすべてうまくいっていました。今、私のコードを実行すると、次のエラーメッセージが表示されます(このメッセージは3回表示されます)。
member function already defined or declared
何が間違っているのか、理解できません。エラーの引き金となるコードは次のようなものです。
static bool compareDates(entry e1, entry e2) {
string s1 = e1.date;
string s2 = e2.date;
int day_1 = atoi(s1.substr(0, 2).c_str());
int month_1 = atoi(s1.substr(3, 2).c_str()); // dd.mm.yyyy
int year_1 = atoi(s1.substr(6, 4).c_str());
int day_2 = atoi(s2.substr(0, 2).c_str());
int month_2 = atoi(s2.substr(3, 2).c_str());
int year_2 = atoi(s2.substr(6, 4).c_str());
if (year_1 > year_2) return true;
else if (year_1 < year_2) return false;
if (month_1 > month_2) return true;
else if (month_1 < month_2) return false;
if (day_1 > day_2) return true;
else if (day_1 < day_2) return false;
return true;
}
// ... some code in between ...
private: void sortList() { // in the class
sort(john_lines.begin(), john_lines.end(), compareDates);
sort(tomas_lines.begin(), tomas_lines.end(), compareDates);
sort(bernd_lines.begin(), bernd_lines.end(), compareDates);
sort(peter_lines.begin(), peter_lines.end(), compareDates);
}
試しにこのコードを残りなしで実行してみたところ、うまくいきました。誰か、私のアプリケーションに何が問題なのか知っていますか?以下は、私が受け取ったエラーメッセージです。
Error 1 error C2535: 'void V2::MainWindow::sortList(void)' : member function already defined or declared
<path>\MainWindow.h 422 1 V2
Error 14 error C2535: 'void V2::MainWindow::sortList(void)' : member function already defined or declared
<path>\MainWindow.h 422 1 V2
Error 28 error C2535: 'void V2::MainWindow::sortList(void)' : member function already defined or declared
<path>\MainWindow.h 422 1 V2
以下は私のコードです。
#include <vector>
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <exception>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct entry {
string text;
string date;
bool finished;
};
vector< entry > john_lines;
bool compareDates(entry e1, entry e2) {
string s1 = e1.date;
string s2 = e2.date;
int day_1 = atoi(s1.substr(0, 2).c_str());
int month_1 = atoi(s1.substr(3, 2).c_str()); // dd.mm.yyyy
int year_1 = atoi(s1.substr(6, 4).c_str());
int day_2 = atoi(s2.substr(0, 2).c_str());
int month_2 = atoi(s2.substr(3, 2).c_str());
int year_2 = atoi(s2.substr(6, 4).c_str());
if (year_1 > year_2) return true;
else if (year_1 < year_2) return false;
if (month_1 > month_2) return true;
else if (month_1 < month_2) return false;
if (day_1 > day_2) return true;
else if (day_1 < day_2) return false;
return true;
}
int main() {
entry e;
e = { "clean the window", "12.08.2016", true };
john_lines.push_back(e);
e = { "tidy the room", "14.06.2012", false };
john_lines.push_back(e);
e = { "sort the papers", "16.08.2016", false };
john_lines.push_back(e);
e = { "writing the code for this application", "19.08.2018", false };
john_lines.push_back(e);
e = { "test period of this applicaition", "30.11.2020", false };
john_lines.push_back(e);
cout << "-------------------------------------------------------------------------------" << endl;
cout << "- before: -" << endl;
cout << "-------------------------------------------------------------------------------" << endl;
for(int i=0; i<john_lines.size(); i++) {
e = john_lines.at(i);
string finished = (e.finished) ? "( done ) " : "(not done) ";
cout << finished << e.date << " - " << e.text << endl;
}
cout << endl << endl;
sort(john_lines.begin(), john_lines.end(), compareDates);
cout << "-------------------------------------------------------------------------------" << endl;
cout << "- after: -" << endl;
cout << "-------------------------------------------------------------------------------" << endl;
for(int i=0; i<john_lines.size(); i++) {
e = john_lines.at(i);
string finished = (e.finished) ? "( done ) " : "(not done) ";
cout << finished << e.date << " - " << e.text << endl;
}
}
どのように解決するのですか?
83行目で宣言されていますが、おそらく他の場所で定義しているのでしょう。
private: void sortList();
422行目で再定義していますね。
private: void sortList() {
sort(john_lines.begin(), john_lines.end(), compareDates);
sort(tomas_lines.begin(), tomas_lines.end(), compareDates);
sort(bernd_lines.begin(), bernd_lines.end(), compareDates);
sort(peter_lines.begin(), peter_lines.end(), compareDates);
}
関連
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】C++の余分な資格エラー
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] C++11のT&&(ダブルアンパサンド)の意味とは?
-
[解決済み] ポインタの「デリファレンス」とはどういう意味ですか?
-
[解決済み] int argc, char *argv[] とはどういう意味ですか?
-
[解決済み] Cannot find symbol" や "Cannot resolve symbol" というエラーはどういう意味ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】C++の余分な資格エラー
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】Enterキーを押して続行する