长话短说,我有这样的事情:
template < int TSize >
class Table
{
public:
void someInterface();
private:
int array[TSize];
};
template < int TSize >
class SomeBigWrap
{
SomeBigWrap() : table(), stuff(&table) {}
Table<Tsize> table;
OtherStuff_1 stuff;
};
class OtherStuff_1
{
OtherStuff_1( Table * p) : pTable(p) {}
const Table * pTable;
void someFnc()
{
pTable->someInterface();
}
};
OtherSuff_1 类需要一个指向表的指针并访问它的接口。但我不能只做一个指向模板类的指针。
我想知道,有没有办法在 SomeBigWrap 的当前实例中将一种表“传递”给 OtherStuff,而不使 OtherStuff 成为模板或使用虚拟函数?
我不能从一个 ITable 继承所有表,因为它的接口必须与数组交互(并且我试图避免使用虚拟函数)。
还有其他方法吗?也许某种形式的鸭子打字?还是我应该完全重新思考我的设计?