在模板和 class 声明之间定义类型别名,以便从中继承
Define type alias between template and class declaration in order to inherent from it
我有一个 class 模板,它在其实现中使用了一些类型别名,并且还继承自同一类型:
template<typename TLongTypename,
typename TAnotherLongTypename,
typename THeyLookAnotherTypename>
class A : SomeLongClassName<TLongTypename,
TAnotherLongTypename,
THeyLookAnotherTypename>
{
using Meow = SomeLongClassName<TLongTypename,
TAnotherLongTypename,
THeyLookAnotherTypename>;
// ... (using Meow a lot)
};
自然我想继承类型别名 Meow
而不是长名称。有什么好的方法可以做到这一点,希望 Meow
将在模板范围内但在 class 范围之前定义?
您可以直接在模板参数列表中将类型别名 Meow
声明为默认模板参数,这意味着您只需拼写一次:
template<typename TLongTypename,
typename TAnotherLongTypename,
typename THeyLookAnotherTypename,
// declare Meow once here
typename Meow = SomeLongClassName<TLongTypename,
TAnotherLongTypename,
THeyLookAnotherTypename>>
class A : Meow // inherit
{
Meow X; // use
};
我有一个 class 模板,它在其实现中使用了一些类型别名,并且还继承自同一类型:
template<typename TLongTypename,
typename TAnotherLongTypename,
typename THeyLookAnotherTypename>
class A : SomeLongClassName<TLongTypename,
TAnotherLongTypename,
THeyLookAnotherTypename>
{
using Meow = SomeLongClassName<TLongTypename,
TAnotherLongTypename,
THeyLookAnotherTypename>;
// ... (using Meow a lot)
};
自然我想继承类型别名 Meow
而不是长名称。有什么好的方法可以做到这一点,希望 Meow
将在模板范围内但在 class 范围之前定义?
您可以直接在模板参数列表中将类型别名 Meow
声明为默认模板参数,这意味着您只需拼写一次:
template<typename TLongTypename,
typename TAnotherLongTypename,
typename THeyLookAnotherTypename,
// declare Meow once here
typename Meow = SomeLongClassName<TLongTypename,
TAnotherLongTypename,
THeyLookAnotherTypename>>
class A : Meow // inherit
{
Meow X; // use
};