11
抽象基本クラスを一般的なケースで実装する方法コードは私が取り組んでいるライブラリから単純化されています。したがって、intとdoubleの明示的な実装はオプションではありません。抽象クラスが可変的コンテキストで使用されるときに抽象メソッドを実装する方法
template <typename T>
struct Foo
{
virtual void send(T t) = 0;
};
template <typename...T>
struct Bar : Foo<T>...
{
void send(T t) override { // does not compile because
// abstract method not implemented
}
};
int main() {
// example usage
Bar<int, double> b;
b.send(1);
b.send(2.3);
}
事前に感謝します。
:抽象メソッドに仮想を追加しました。
ねえ、あなたは違いが間にあるものを私に伝えることができます: 'foo2は ...'と 'foo2は'(括弧内のブラケット対外ドット) –
Brandon
@Brandon - 全く異なるものです。 'Foo2'と書くと、 'Foo2 'という基本クラスを 'sizeof ...(T)'というテンプレートパラメータで宣言します。 'Foo2 ...'と書いた場合、 'Foo2 、Foo2 、Foo2 /* etc * /'のような基本テンプレートを 'sizeof ...(T)'と宣言します –
max66