バックグラウンド
私は英語のテキストを同等の地域の言語のテキストに変換する音声変換プログラムに取り組んでいます。地域の言語は英語の文字よりも多くの文字を持ち、地域の言語のフォントはフォント内のほぼすべての位置(1〜255)を使用します。
私のプログラムはさまざまなフォントをサポートしており、文字にアクセスできるメソッドを持つフォントクラスを作成しました。このクラスには、それぞれが各文字を表す255個のメソッドがあります。新しいフォントが必要な文字メソッドをオーバーライドできるように、これらはすべて仮想としてマークされています。
このフォントクラスのメソッドは簡単です。すべてのメソッドは1行です。例は
string StandardFont::consonant1(){
return "a";
}
string StandardFont::consonant2(){
return "b";
}
..
質問
- 1つのクラスに255個の仮想関数があると、パフォーマンスの問題が発生しますか?vtableに関することは知っていますが、このシナリオでどの程度の影響があるかはわかりません。
- 誰かがこのクラスの代替デザインを提案できますか?主な設計目標は、派生クラスが必要なメソッドをオーバーライドできるようにすることです。マップやベクトルなどのコンテナに文字を追加し、文字を取得するメソッドを提供することを考えました。しかし、255個のアイテムがあり、このクラスは頻繁に使用されるため、キャラクターを取得するためにコンテナーをループする必要があるたびに、これも問題になると思います。
何か考えはありますか?