我有一个多参数包的可变模板类,类似于这样。
template <typename... Types>
struct TopicsList { };
template <typename... Topics>
class TheParent;
template <typename... OutputTopics, typename... InputTopics>
class TheParent<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
{
};
我想从这个类继承,就像这样。
template <typename... Topics>
class TheChild;
template <typename... OutputTopics, typename... InputTopics>
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
: public TheParent<OutputTopics..., InputTopics...>, public ::testing::Test
{
};
但是我得到了以下的编译错误。
error: invalid use of incomplete type 'class {anonymous}::TheParent<TopicA, TopicB, TopicC>'
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
如果有任何线索可以告诉我为什么会这样,我将非常感激!
那么
template <typename... OutputTopics, typename... InputTopics>
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
: public TheParent<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>, public ::testing::Test
// ....................^^^^^^^^^^^...............^^^^^^^^^^^^^^..............^
{
};
?
我是说... 如果你的 TheParent
宣称只收到几个 TopicsList
,你必须保持 TopicsList
包装器将参数从 TheChild
到 TheParent
.