前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/
探検
C++相談室 part160
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2022/04/15(金) 08:39:32.42ID:WMzvufu22022/04/15(金) 08:42:10.92ID:WMzvufu2
全スレ159だったわ
タイトルだけ間違えた
タイトルだけ間違えた
2022/04/15(金) 08:46:23.30ID:wykOop5a
乙です。
2022/04/15(金) 08:50:45.87ID:xDiQzMrD
おつ
2022/04/15(金) 09:04:13.20ID:1joR/OE7
>>2
どんまい、乙
どんまい、乙
2022/04/15(金) 09:12:06.04ID:pOJAVr49
グローバル変数と静的変数は
・書き換えられうる場合は排他制御が必須
・初期化のみの場合でもその初期化の排他制御が必須
・ただし静的変数の初期化はC++11以降は自動的に排他制御されることが保証される
・書き換えられうる場合は排他制御が必須
・初期化のみの場合でもその初期化の排他制御が必須
・ただし静的変数の初期化はC++11以降は自動的に排他制御されることが保証される
2022/04/15(金) 09:23:58.05ID:xDiQzMrD
まとめると、main開始してからリソース用意して適当に渡せよってことよ
原則としてグローバル変数もシングルトンも避けたほうが良い
原則としてグローバル変数もシングルトンも避けたほうが良い
2022/04/15(金) 12:30:29.25ID:hAkRYyug
グローバル変数を避ければシングルトンがmain開始前に呼び出されること無いだろ。
グローバル変数だけ避ければいい。
グローバル変数だけ避ければいい。
2022/04/15(金) 12:37:29.85ID:1+gF2L/G
シングルトンなんてグローバル変数と同じ
避けたほうが良い
避けたほうが良い
2022/04/15(金) 13:17:57.26ID:JW7HV0lo
シングルトンの中に書き換わる変数を持っていたらデータ競合が起こりうるよな
2022/04/15(金) 15:34:09.27ID:wykOop5a
>>9
シングルトン無しでどうやってプログラム全体で共通のリソースを管理するの?
シングルトン無しでどうやってプログラム全体で共通のリソースを管理するの?
2022/04/15(金) 15:49:11.91ID:rZhfm+p8
2022/04/15(金) 16:34:54.97ID:WyYUxIA+
>>11 「管理」が何のことを言ってるのかわからないけど、たぶんひきすうをつかえばいいと思うんだ。
2022/04/15(金) 16:52:25.27ID:2FVuY2vb
引数ってこういうことか?
struct singleton_t { };
singleton_t& get_singleton()
{
static singleton_t the_singleton;
return the_singleton;
}
void func1(singleton_t&);
singleton_t& func2();
int main()
{
func1(func2());
}
func2なんか使わずにfunc1の中でget_singletonを呼び出せば済むことだし
だったらthe_singletonをグローバルにするのと大差なくねって
struct singleton_t { };
singleton_t& get_singleton()
{
static singleton_t the_singleton;
return the_singleton;
}
void func1(singleton_t&);
singleton_t& func2();
int main()
{
func1(func2());
}
func2なんか使わずにfunc1の中でget_singletonを呼び出せば済むことだし
だったらthe_singletonをグローバルにするのと大差なくねって
2022/04/15(金) 19:46:49.16ID:shXIYNIj
2022/04/15(金) 19:49:50.97ID:RJmakPbV
まあ引数で渡せばいいわけだが…
2022/04/15(金) 19:53:05.56ID:PiHpabQE
>>15
グローバル変数やシングルトンがなくていいとは言わないけど、何でひきすうで出来ないと思うの?
グローバル変数やシングルトンがなくていいとは言わないけど、何でひきすうで出来ないと思うの?
2022/04/15(金) 19:55:09.07ID:shXIYNIj
>>16
それ何て純粋関数型プログラミング?
それ何て純粋関数型プログラミング?
2022/04/15(金) 20:05:45.76ID:gTMTzKSQ
システム全体のリソースならグローバルでいいだろ
グローバル変数を導入するメリットの方が勝つから
なんでもかんでもグローバルに置くのはやめようねというだけの話でしょ
グローバル変数を導入するメリットの方が勝つから
なんでもかんでもグローバルに置くのはやめようねというだけの話でしょ
2022/04/15(金) 20:07:59.29ID:shXIYNIj
>>19
システム全体じゃないリソースてどんなのあったっけ?
システム全体じゃないリソースてどんなのあったっけ?
2022/04/15(金) 20:15:16.00ID:RJmakPbV
リソースって何を指してるんだろう…
2022/04/15(金) 20:19:31.51ID:RJmakPbV
まあ寿命がはっきりしないオブジェクトって嫌なもんだよ
わかってもらえるとは思わんけど
わかってもらえるとは思わんけど
23デフォルトの名無しさん
2022/04/15(金) 20:45:25.17ID:aidqFE7S 前スレでクラス内部にinstanceを持たせて運用する事を質問した者です。
(注)前スレ:943
:ユニークポインタをシングルトンの様な仕様に置き換え
std::unique-ptr<Hoge>Temp=std::make-unique<Hoge>();
↓
static Hoge& GetInstance(){static Hoge temp;return temp;}
上記の仕様をさらに、
template <class T>
inline T Instance;
というテンプレートinstanceで使用できるようにアドバイスを頂き、その仕様に変更したところ、運用自体は問題ないのですが、コンストラクターの呼び出し位置がおかしい感じになってしまいますた。
インラインなのでコンパイル時?(inittermという関数内部でコンストラクトが実行されている)にコンストラクターが起動されてしまう感じで、外部ライブラリを使用したコンストラクションが失敗します。
これは明示的に回避できるのでしょうか?
また、皆さんはグローバル変数等を使用するときにどういった方法を取られますか?
クラス名から呼び出せるインスタンスはかなり便利なので使っていきたいのですが……
度々申し訳ございますん。
(注)前スレ:943
:ユニークポインタをシングルトンの様な仕様に置き換え
std::unique-ptr<Hoge>Temp=std::make-unique<Hoge>();
↓
static Hoge& GetInstance(){static Hoge temp;return temp;}
上記の仕様をさらに、
template <class T>
inline T Instance;
というテンプレートinstanceで使用できるようにアドバイスを頂き、その仕様に変更したところ、運用自体は問題ないのですが、コンストラクターの呼び出し位置がおかしい感じになってしまいますた。
インラインなのでコンパイル時?(inittermという関数内部でコンストラクトが実行されている)にコンストラクターが起動されてしまう感じで、外部ライブラリを使用したコンストラクションが失敗します。
これは明示的に回避できるのでしょうか?
また、皆さんはグローバル変数等を使用するときにどういった方法を取られますか?
クラス名から呼び出せるインスタンスはかなり便利なので使っていきたいのですが……
度々申し訳ございますん。
2022/04/15(金) 21:08:51.51ID:ZOmTtyVU
実際に1個しか存在しないものはシングルトンの表現が合ってる
GPUとかな
GPUとかな
2022/04/15(金) 21:22:11.96ID:o8nSddd2
inline変数は(MSVC16で確認する限り)1つの.dll内で同じ実体を共有する
dllをまたぐと別の実体になる
.hに書いてもリンク時に多重定義で怒られない
その言い方だとmainを呼び出す前の初期化処理で死んでる感じか
dllをまたぐと別の実体になる
.hに書いてもリンク時に多重定義で怒られない
その言い方だとmainを呼び出す前の初期化処理で死んでる感じか
2022/04/15(金) 21:25:54.67ID:lFYUjAWg
シングルトンにしてもグローバル変数にしても排他制御が必要な点で同じだよな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【台湾有事】トランプ氏 電話会談で高市総理に発言抑制を要求か 米メディア報道… ★7 [BFU★]
- 【速報】 トランプ米大統領が高市首相に、台湾巡り助言したという報道は事実ではない 日本政府が否定 [お断り★]
- 「国分太一さんの悪口なんて聞いたことがない」 起業家・溝口勇児氏が擁護「三国志で言えば劉備」「誤解生まれているんじゃないか」 [muffin★]
- 追い詰められているのは「高市首相」ではなく「習近平」? 対日強硬姿勢は「経済悪化」で虚勢、高市首相へ [お断り★]
- 「AdoのMCは長いし、空気が盛り下がる」ネットの声にAdo本人が言及「すみません。喋るのが元々得意でないので…」 [muffin★]
- 介護士の平均月給は34万1340円(ボーナス込み) 厚労省が速報値発表 [お断り★]
- 【悲報】ネトウヨ「高市内閣すげぇ…国会で居眠りしてる閣僚が一人もいねぇ…!!!」👈19万いいね [714769305]
- 🇺🇸メディア大誤報、高市電話会談記事「🇨🇳刺激しないよう公の場で発言を控えろ」と加筆して訂正へ [709039863]
- 【高市悲報】麻生太郎さん、ものすごい顔で官邸入り [115996789]
- 段差で足捻った!!!!
- 【悲報】石破茂さん、ジョンウィック状態www鈴木農水大臣を連日猛批判www [793117252]
- 世界一流紙(ロイター、ブルームバーグ、WSJ) 「トランプが高市首相に挑発しないよう助言」 と一斉報道→日本政府は否定wwww [271912485]
