簡単に言えば、私は次のようなものを持っています:
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 には、テーブルへのポインターとそのインターフェイスへのアクセスが必要です。しかし、テンプレート クラスへのポインタを作成することはできません。
OtherStuff をテンプレートにしたり、仮想関数を使用したりせずに、SomeBigWrap の現在のインスタンスのテーブルのタイプを OtherStuff に「渡す」方法はあるのでしょうか。
インターフェイスは配列とやり取りする必要があるため、1 つの ITable からすべてのテーブルを継承することはできません (仮想関数の使用を避けようとしています)。
他の方法はありますか?ダックタイピングの何らかの形でしょうか?または、デザインを完全に再考する必要がありますか?