有没有办法制作类模板函数?
所以例如
//Warning: this is conceptual pseudo-code
template<typename TemplateClass, TemplateItem>
TemplateClass &TemplateClass::operator=(TemplateItem &B)
{
Item = B.Item;
return *this;
}
//or...
template<typename TemplateClass, TemplateItem>
TemplateClass &TemplateClass::Assignment(TemplateItem &B)
{
Item = B.Item;
return *this;
}
Assignment<TestA,TestB>(B);
或类似的东西。
这不只是作业,我会发表评论。
答案 0 :(得分:1)
我确信我会受到“预处理者是邪恶的”团体的打击,但我认为你正在寻找这样的事情:
#define DEFINE_ASSIGNMENT(mainClass,memberClass,member) \
mainClass & mainClass::operator = (const memberClass & rhs) \
{ \
member=rhs.member; \
return *this; \
}
DEFINIE_ASSIGNMENT(TestA,TestB,Item)
答案 1 :(得分:1)
您无法在类的定义中添加内容。您不能强制类具有特定的成员函数。将;
放在类定义上之后,它已被定义,并且无法更改。因此,如果您想拥有一个类的成员,则必须在类定义中声明。
现在,扩展此类功能的一般方法是使用非成员函数:
template<typename ClassName, typename Other>
ClassName &SomeFunc(ClassName &myType, const Other &theOther);
此函数将返回myType
。
显然,这对那些必须是班级成员的运营商(如作业)没有帮助。但是你无能为力。你可以做的最多就是赋值操作符调用非成员函数,所以所有的实际工作都在那里进行。
但这是你能做的最好的事情。