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++中实现一个非常基本的工厂模式,即 class Base {}; class Derived1 : public Base {}; class Derived2 : public Base {};_C++_Templates_Factory - Fatal编程技术网

带有工厂的类模板 我试图在C++中实现一个非常基本的工厂模式,即 class Base {}; class Derived1 : public Base {}; class Derived2 : public Base {};

带有工厂的类模板 我试图在C++中实现一个非常基本的工厂模式,即 class Base {}; class Derived1 : public Base {}; class Derived2 : public Base {};,c++,templates,factory,C++,Templates,Factory,用法可能类似于 Base* o1 = new Derived(); 但是,对于类模板,我不确定如何继续 template <class T> class Base {}; template <class T> class Derived : public Base<int> {}; 模板 类基{}; 模板 派生类:公共基{}; 在这种情况下,基*会是什么样子 不幸的是,在我的例子中,使用auto不是一个选项,我希望能够让客户端不必知道实际的T是什么 te

用法可能类似于

Base* o1 = new Derived();
但是,对于类模板,我不确定如何继续

template <class T>
class Base {};
template <class T>
class Derived : public Base<int> {};
模板
类基{};
模板
派生类:公共基{};
在这种情况下,*会是什么样子

不幸的是,在我的例子中,使用auto不是一个选项,我希望能够让客户端不必知道实际的T是什么

template <class T> class Base {};

template <class T>
class Derived : public Base<int> {};
模板类基类{};
模板
派生类:公共基{};
你可以

Base<int>* b_int = new Derived<char>; // All Derived<T> has base Base<int>
Base*b_int=new-Derived;//所有派生都有基

你的意思是所有的基类型都应该从一些常见的、非模板化的、实际的基继承吗?“在这种情况下,基*看起来像什么?”在这种情况下,你必须编写
Base*o1=new-Derived而不是。。。除非,如建议的那样,你让你的
Base
类继承一个非模板化的实际基类。@Wyck如果我理解正确,你是说我应该能够做以下事情?类基类{}模板类TBAse:public Base{}模板类派生:public TBAse Base*d=new-Derived()?