【C++⑩】static_assertの行の説明 | UE4&5 Forum | Tech Stadium Forum

通知
すべてクリア

【C++⑩】static_assertの行の説明  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
03/05/2022 2:56 pm  
動画C++⑩の18:12部分
static_assert(std::is_base_of<Singleton, Type>::value);
動画に説明が無かったので、この行の意味について教えてください。
static_assert is_base_of  を検索して、コンパイル時にSingltonがTypeクラスを継承しているか、をチェックすることは分かったのですが、この行が
  1. どのような場合にfalseになり
  2. どういう状況で役に立つのか
を教えてもらえますでしょうか。

引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
03/05/2022 2:56 pm  

SingltonがTypeクラスを継承しているか
ー>SingletonがTypeクラスを継承することではなくTypeクラスがSingletonクラスを継承することが正しいです。Singletonクラスが親、Typeクラスが子です。

1.どのような場合にfalseになり
ー>TypeクラスがSingletonクラスを継承してない場合はfalseになります。

2.どういう状況で役に立つのか
ー>static_assert関数はfalseが入った時にコンパイルエラーを出す関数です。TypeクラスがSingletonクラスを継承しない時はコンパイルエラーが出るのでエラーチェックするための処理です。例外処理で検索すれば詳しいことを理解できると思います。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
03/05/2022 2:57 pm  
例えば今回のプロジェクトで
class BigOrSmall : public utility::Singleton<BigOrSmall>
というクラス宣言があります。
BigOrSmall  Singleton を継承して生成される一方、継承の際に既に BigOrSmallを型として渡しており、循環参照しているように見えます。
どちらが先に処理されるか分からず混乱しています。
どういう処理の流れでこのようなことが可能になるのでしょうか。

返信引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
03/05/2022 2:57 pm  

テンプレートクラスを継承する場合はその書き方になります。


返信引用
共有:
タイトルとURLをコピーしました