Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;子类参数化类,并将子类用作专门化_C++_Templates_Inheritance - Fatal编程技术网

C++ C++;子类参数化类,并将子类用作专门化

C++ C++;子类参数化类,并将子类用作专门化,c++,templates,inheritance,C++,Templates,Inheritance,我想要这样的东西: class TestParent<class T> { T* some(); } class TestChild : public TestParent<TestChild> {}; 类TestParent { T*some(); } 类TestChild:公共TestParent {}; 这可能吗 谢谢。绝对感谢!此技术通常用于高级技术,如或实现。如果你做高级C++编程,你会看到很多。此技术通常用于高级技术,如或实现。你可以看到很多,如

我想要这样的东西:

class TestParent<class T>
{
    T* some();
}

class TestChild : public TestParent<TestChild>
{};
类TestParent
{
T*some();
}
类TestChild:公共TestParent
{};
这可能吗


谢谢。

绝对感谢!此技术通常用于高级技术,如或实现。如果你做高级C++编程,你会看到很多。此技术通常用于高级技术,如或实现。你可以看到很多,如果你做高级C++编程。

这是可能的,但是只有当你定义了一个代码的实现>一些< /代码>否则你会面临编译错误。您可能还希望添加一个受保护的构造函数,以便在头作用域中定义基类的方式之外不能创建和使用基类

template<typename T>
class TestParent{
    public:

        T* some() { return new T(); }

    //this is suggested
    protected:
        TestParent(){}
};

class TestChild : public TestParent<TestChild>{}
模板
类TestParent{
公众:
T*some(){返回新的T();}
//建议这样做
受保护的:
TestParent(){}
};
类TestChild:公共TestParent{}

这在Alexandrescu's流行的和其他技术中使用。

这是可能的,但前提是您定义了
某些
的实现,否则您将面临编译错误。您可能还希望添加一个受保护的构造函数,以便在头作用域中定义基类的方式之外不能创建和使用基类

template<typename T>
class TestParent{
    public:

        T* some() { return new T(); }

    //this is suggested
    protected:
        TestParent(){}
};

class TestChild : public TestParent<TestChild>{}
模板
类TestParent{
公众:
T*some(){返回新的T();}
//建议这样做
受保护的:
TestParent(){}
};
类TestChild:公共TestParent{}

这在Alexandrescu的流行的和其他技术中使用。

当然你指的是
模板类TestParent
?当然你指的是
模板类TestParent