【发布时间】:2020-06-22 22:29:00
【问题描述】:
这样编译:
template<typename T, class T2, class = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
class ENABLE{
public:
T a;
ENABLE(T b): a(b) {};
};
template<typename T, class T2>
class ENABLE_CHILD : public ENABLE<T, T2> {
public:
ENABLE_CHILD(T x): ENABLE<T, T>(x) {};
bool FOO(auto a);
};
template<typename T, class T2>
bool ENABLE_CHILD<T, T2>::FOO(auto a) { return(1); };
但这不是:
template<typename T, class T2, class = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
class ENABLE{
public:
T a;
ENABLE(T b): a(b) {};
};
template<typename T, class T2, class = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
class ENABLE_CHILD : public ENABLE<T, T2> {
public:
ENABLE_CHILD(T x): ENABLE<T, T>(x) {};
bool FOO(auto a);
};
template<typename T, class T2>
bool ENABLE_CHILD<T, T2>::FOO(auto a) { return(1); };
错误信息:
- 错误:无效使用不完整类型'class ENABLE_CHILD
' - 注意:'class ENABLE_CHILD
的声明(单击此按钮可进入声明声明)
所以我的编译器认为这个类是不完整的。有想法该怎么解决这个吗?提前致谢。
【问题讨论】: