使用 c++17 编译时无法从 base-class 访问成员类型
Can not access member type from base-class when compiled using c++17
我有以下代码在 c++14 中编译成功。
template<class T, class ...Args>
class B
{
public:
using AbcData = int;
};
template<typename ...Args>
class D : public B<float, Args...>
{
public:
AbcData m_abc;
};
但是在c++17中编译时,出现如下错误。
error C2061: syntax error: identifier 'AbcData'
代码有什么问题以及如何解决这个问题?
当基础 class B
class 依赖于模板参数时,即使派生 class D
这里键入别名 AbcData
继承自 B
,仅在 D
class 中使用 AbcData
是不够的。
你需要明确,从你拥有它的地方
template<typename ...Args>
class D : public B<float, Args...>
{
public:
typename B<float, Args...>::AbcData m_abc; // --> like this
};
我有以下代码在 c++14 中编译成功。
template<class T, class ...Args>
class B
{
public:
using AbcData = int;
};
template<typename ...Args>
class D : public B<float, Args...>
{
public:
AbcData m_abc;
};
但是在c++17中编译时,出现如下错误。
error C2061: syntax error: identifier 'AbcData'
代码有什么问题以及如何解决这个问题?
当基础 class B
class 依赖于模板参数时,即使派生 class D
这里键入别名 AbcData
继承自 B
,仅在 D
class 中使用 AbcData
是不够的。
你需要明确,从你拥有它的地方
template<typename ...Args>
class D : public B<float, Args...>
{
public:
typename B<float, Args...>::AbcData m_abc; // --> like this
};