C++ 如何定义模板的模板化子类?
我刚刚从4.7更新到GCC 4.8.2,现在收到以下代码的警告:C++ 如何定义模板的模板化子类?,c++,C++,我刚刚从4.7更新到GCC 4.8.2,现在收到以下代码的警告: template <class T_base> class factory { private: template <class T> struct allocator : factory { // ^ warning: invalid use of incomplete type 'class factory<T_base>' }
template <class T_base>
class factory {
private:
template <class T>
struct allocator : factory {
// ^ warning: invalid use of incomplete type 'class factory<T_base>'
};
};
我做错了什么?上述构造是否有避免警告和错误的语法?声明嵌套模板的正确语法是有两个单独的模板参数列表:
template <class T_base>
template <class T>
struct factory<T_base>::allocator : factory<T_base> {
};
但是,我怀疑这段代码的语义是什么。声明嵌套模板的正确语法是有两个单独的模板参数列表:
template <class T_base>
template <class T>
struct factory<T_base>::allocator : factory<T_base> {
};
但是,我怀疑这段代码的语义是什么。您需要这样拼写:
template <class T_base>
template <class T>
struct factory<T_base>::allocator : factory<T_base>
{
// ...
};
您需要这样拼写:
template <class T_base>
template <class T>
struct factory<T_base>::allocator : factory<T_base>
{
// ...
};
@KerrekSB没关系,这是一个复制粘贴错误。我已经更正了。@KerrekSB没关系,这是一个复制粘贴错误。我已经改正了。现在我知道需要什么了,这是有道理的:谢谢!工厂不是嵌套类型名称或上下文中的任何名称,这有点令人恼火>。现在我知道需要什么了,这才有意义:谢谢!在这个上下文中,工厂不是嵌套类型名或其他任何名称,这有点令人恼火>。