0

有没有办法制作类模板功能?

所以例如

//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);

或类似的规定。

不只是作业,我会评论。

4

2 回答 2

1

我敢肯定我会被“预处理器是邪恶的”团体抨击,但我认为你正在寻找这样的东西:

#define DEFINE_ASSIGNMENT(mainClass,memberClass,member)        \
mainClass & mainClass::operator = (const memberClass & rhs)    \
{                                                              \
    member=rhs.member;                                         \
    return *this;                                              \
}

DEFINIE_ASSIGNMENT(TestA,TestB,Item)
于 2011-09-29T17:41:33.343 回答
1

您不能将某些内容添加到类的定义中。您不能强制一个类具有特定的成员函数。一旦你把它;放在一个类定义上,它就已经被定义了,并且不能被改变。所以如果你想拥有一个类的成员,它必须类定义中声明。

现在,像这样扩展功能的一般方法是使用非成员函数:

template<typename ClassName, typename Other>
ClassName &SomeFunc(ClassName &myType, const Other &theOther);

此函数将返回myType.

显然,这对必须是类成员的运算符没有帮助,比如赋值。但是你对此无能为力。您最多可以让赋值运算符调用非成员函数,因此所有实际工作都在其中进行。

但这是你能做的最好的。

于 2011-09-29T17:44:16.327 回答