2017-07-25 99 views
0

我需要定義一個具有由模板類組成的元組的結構。C++不是類模板

用法:

TestStruct<A, float, float, int32_t> test_a = { std::make_tuple(A(1.0), A(2.0), A(3)) }; 
TestStruct<B, float, float, int32_t> test_b = { std::make_tuple(B(1.0), B(2.0), B(3)) }; 

此刻我的實現是這樣的:

template<typename ClassBase, typename... ParamType> 
struct TestStruct 
{ 
    std::tuple<typename ClassBase<ParamType>...> m_testValues; 
}; 

通過編譯,我得到以下錯誤:

error: ‘ClassBase’ is not a class template 
    std::tuple<class ClassBase<ParamType>...> m_testValues; 
        ^

如何做我必須確定我的結構?

+1

什麼是'ParamBase'? –

+0

對不起,這是一個錯字 – lucab0ni

+0

請提供[mcve]。什麼是'A'?什麼是'B'? – user463035818

回答

8

模板不是一種類型。此參數typename ClassBase表示模板必須接受類型作爲第一個參數。但它然後繼續把它作爲模板ClassBase<ParamType>,它根本不是。

如果你想有一個模板,模板參數,聲明爲這樣:

template<template<class> class ClassBase, typename... ParamType> 
struct TestStruct 
{ 
    std::tuple<ClassBase<ParamType>...> m_testValues; 
}; 
+1

另外,應該修改用法,以用'A (1.0)'代替'A(1.0)'。 – Jarod42