c++ - 如何制作通用类方法?

标签 c++ templates function-templates

有什么方法可以使类模板函数?

比如

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

或者类似的东西。

这不仅仅是为了作业,我会评论。

最佳答案

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

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

DEFINIE_ASSIGNMENT(TestA,TestB,Item)

关于c++ - 如何制作通用类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600621/

相关文章:

javascript - 将模板实例数据作为关键字参数传递给嵌套模板

c++ - C++ 中的 xvalue 是什么

c++ - C++ 中的位数组

c++ - 从模板文件生成代码

c++ - 模板化的成员函数可以实现两个基类的虚函数吗?

c++ - 关于将谓词作为模板参数传递

C++ 友元函数模板重载和 SFINAE 在 clang++、g++、vc++(C++14 模式)中的不同行为

node.js - Node : function template without return value

c++ - 在下面的这种情况下,是否有任何理由从使用 const char* 更改为 string

c++ - 将常量 T* 常量转换为 T*