C++ 设计嵌套模板类
我正在定义一个类,它具有指向模板化类的私有成员指针。我有一个关于这个课程设计的问题。更准确地说,外部类是否应该模板化。 因为,我正在初始化外部类的构造函数中的私有成员,我想这样做是正确的。还有其他选择吗? 下面给出了类声明的示例,欢迎所有建议:C++ 设计嵌套模板类,c++,templates,nested-class,C++,Templates,Nested Class,我正在定义一个类,它具有指向模板化类的私有成员指针。我有一个关于这个课程设计的问题。更准确地说,外部类是否应该模板化。 因为,我正在初始化外部类的构造函数中的私有成员,我想这样做是正确的。还有其他选择吗? 下面给出了类声明的示例,欢迎所有建议: #include <foo.h> #include <bar.h> template < class FOO_TYPE, class BAR_TYPE > class OuterClass{ pub
#include <foo.h>
#include <bar.h>
template < class FOO_TYPE, class BAR_TYPE >
class OuterClass{
public:
OuterClass(){
this->m_pFoo = new CFoo<FOO_TYPE>();
this->m_pBar = new CBar<BAR_TYPE>();
this->m_nMyInt = 0;
}
template < class FOO_TYPE >
CFoo<FOO_TYPE> * processFoo();
template < class BAR_TYPE >
CBar<BAR_TYPE> * processBar();
~OuterClass(){
delete this->m_pFoo;
delete this->m_pBar;
}
private:
int m_nMyInt;
CFoo<FOO_TYPE> * m_pFoo;
CBar<BAR_TYPE> * m_pBar;
};
#包括
#包括
模板
类外类{
公众:
外类群(){
这->m_pFoo=新的CFoo();
这->m_pBar=新CBar();
这->m_nMyInt=0;
}
模板
CFoo*processFoo();
模板
CBar*processBar();
~OuterClass(){
删除此->m_pFoo;
删除此->m_pBar;
}
私人:
国际货币基金组织;
CFoo*m_pFoo;
CBar*m_pBar;
};
这取决于外部类的预期用途。您的代码表明,OuterClass
可以与不同的模板类型一起使用,因此将其作为模板也是有意义的。实际上,这种模板参数转发非常常见
但是,如果您更希望
OuterClass
只使用CFoo
和CBar
的特定模板专门化,那么您只需在相应成员的声明中指定所需的FOO类型
和BAR类型
定义不正确
它们不是类中的模板函数,而是专门为第一个和第二个模板参数键入的
CFoo和CBar似乎是外部模板
您的类在复制构造和赋值方面也不符合“规则3”,并且如果CBar的构造函数抛出(在这种情况下,您的构造函数将抛出,您的析构函数将永远不会被调用,m_pFoo将永远不会被删除),则该类不是异常安全的。关于
processFoo
和processBar
,你说得对,只有当外部类没有模板化时才应该出现。此外,我没有把整个代码,但你是对的,我需要复制构造函数和赋值方法。