【发布时间】:2011-02-13 17:25:26
【问题描述】:
让我们有一堆桌子。表有列。每列都包含其类型的数据。我正在寻找一个通用表的结构,它允许我访问给定坐标处的元素并访问各个列。
我的想法是提供一个可以在儿童中实现的通用接口。孩子们会使用向量来存储各个列。我正在使用四张表,因此我可以为每张表设置一个对象。
class Data {
template < typename T >
virtual T getElement(unsigned int row, unsigned int column) const = 0;
template < typename T >
virtual void setElement(unsigned int row, unsigned int column, T value) = 0;
template < typename T >
virtual std::vector< T > getColumn(unsigned int column) const = 0;
template < typename T >
virtual void setColumn(unsigned int column, std::vector< T > values) = 0;
};
问题显然在于“错误:模板可能不是‘虚拟’”。解决这个问题的最佳方法是什么?我想避免使用外部库。
彼得
【问题讨论】:
-
表结构在编译时是否已知,或者您是否想要一个无需重新编译即可与任何表一起使用的解决方案?
-
为什么函数需要是虚拟的?
-
@ronag:因为
Data确实是一个接口。这些函数旨在在派生类中被覆盖。否则,抽象的非虚函数有什么用? -
@jalf 好吧,一个通用的解决方案会很好,但我知道我的表的结构。
-
@Vlad:让我重新表述我的问题。为什么“数据”需要是一个接口?我不太明白你想做什么。
标签: c++ templates virtual generics