我想從base1或base2繼承「派生」類。我想爲此使用模板專門化。我有以下使用模板專業化和構造函數從兩個基類中的任何一個繼承
//base1
template<typename FT>
class base1
{
public:
base1(FT m)
{}
};
//base2
template<typename FT>
class base2
{
public:
base2(FT m)
{}
};
//define template specializations
template<int sType, typename FT>
class baseT {};
//for base1
template<typename FT>
class baseT<1,FT>
{
public:
typedef base1<FT> bType;
};
//for base2
template<typename FT>
class baseT<2,FT>
{
public:
typedef base2<FT> bType;
};
//Derived class which inherits either from base1 or base2
template<int sType, typename FT>
class derived : public baseT<sType,FT>::bType
{
public:
derived(FT m)
{}
};
int main()
{
derived<1,float> a1(1);
return 0;
}
此代碼不能編譯(在Linux平臺上),因爲基類期待一個說法,但我不知道如何將它傳遞給衍生,使這項工作的構造。 (我不想使用條件)。任何建議將有助於
我不認爲問題出現在您發佈的代碼中。我剛剛編譯了,沒有鏈接,您發佈的代碼示例和一切按預期工作 –