テンプレートを強制する方法 BaseClassAから派生しますか? 質問する

テンプレートを強制する方法 BaseClassAから派生しますか? 質問する

基本クラス関数を呼び出せるように、テンプレートを特定の基本クラスから強制的に取得することは可能でしょうか?

template <class T>
void SomeManager::Add(T)
{
    T->CallTsBaseClassFunction();
    //... do other stuff
}

ベストアンサー1

もちろん、型特性を SFINAE と組み合わせることができます。

#include <type_traits>

template <class T>
typename std::enable_if<std::is_base_of<your_base_class, T>::value, void>::type
SomeManager::Add(T)
{
    T->CallTsBaseClassFunction();
    //... do other stuff
}

ただし、ここでは特にメリットは見当たりません。

おすすめ記事