注意:这是 this. 的后续问题
我有一组模板类,它们使用完全不同的数据类型以完全不同的方式做完全不同的事情。但是,它们确实共享通用的方法名称。例如,Get()
、Set()
、Resize()
等对于所讨论的每个类都是有效的方法。此外,它们以相同的顺序接受参数。这允许广义的非友元、非成员函数在每个类上工作。一个简化的例子:
template <typename Class, typename Datatype>
void Insert(const Class<Datatype>& Object, const std::size_t Index, const Datatype Value)
{
Object.Resize(Object.Size() + 1);
for (std::size_t CurrentIndex = Object.Size() - 1; CurrentIndex > Index; CurrentIndex--)
{
Object.Set(CurrentIndex, Object.Get(CurrentIndex - 1));
}
Object.Set(Index, Value);
}
现在,我只是依靠自己的内存来正确定义所有适当的方法。有没有办法让编译器强制执行正确方法的定义?如果没有,是否有更好的方法来做到这一点?
最佳答案
您要查找的内容称为“concepts”,它曾经是 C++0x 中的一项功能,但已从新标准中删除。
C++03 有一些实现,但它们更难使用,可能不值得麻烦。例如Boost Concept Checking
gcc 也有 --enable-concept-check 选项,虽然我不完全确定它如何与用户代码一起工作。
关于c++ - 强制使用通用方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5677745/