私のC++クラス用のカレンダーを作成します。私は静的メソッドと静的コンテナのユーティリティクラスを持っています。最も顕著なのは:intとtupleの静的STLマップは0を返します
Dictionary.h
static std::map<int,std::tuple<std::string,int>>months;
static std::map<int,std::tuple<std::string,int>>::iterator mitr;
このマップは、キー、月0-11として、含まれています。タプル値には、各月の文字列表現と各月の日数が含まれます。
Calendar.cpp
Calendar::Calendar(){
Dictionary::init();
time_t t = chrono::system_clock::to_time_t(chrono::system_clock::now());
tm* t2 = localtime(&t);
int mo = (t2->tm_mon);
Dictionary::mitr = Dictionary::months.find(mo);
cout<<(*Dictionary::mitr).first<<endl; // => 0
cout<<get<0>((*Dictionary::mitr).second)<<endl; // nothing
}
私はよく分からない:例えば:私は別のクラスからこのマップにアクセスしようとすると
Dictionary.cpp
map<int,tuple<string,int>> Dictionary::initMonths(){
map<int,tuple<string,int>>m;
map<int,tuple<string,int>>::iterator mapitr = m.begin();
m.insert(mapitr, make_pair(0,make_tuple("January",31)));
m.insert(mapitr, make_pair(1,make_tuple("February",28)));
// insert remaining months...
return m;
}
問題が発生します私がここで間違っていること。任意の提案をいただければ幸いです。
EDIT:
void Dictionary::init(){
packaged_task<map<int,tuple<string,int>>()>task3(initMonths);
future<map<int,tuple<string,int>>>fu3 = task3.get_future();
guarded_thread t3(std::move(task3));
map<int,tuple<string,int>>months = fu3.get();
}
ここでマップを使用する主な理由は、月の文字列名とその月の日数をまとめて1つのコンテナに格納します。 –
これはベクトルでも可能です(さらに簡単な場合もあります): 'std :: vector> months(12); months [0] = make_tuple( "January"、31); // ... ' –
volzo
... btw、あなたの元の問題は修正されましたか? – volzo