ストレージクラスへのアクセスを少し簡単にしようとしたところ、多くの知識がないという状況に陥りました。そして、私と同じことをしようとしている人々を見つけることは容易ではありません。C++配列の添え字演算子テンプレート
私がやろうとしているのは、値の配列を内部的に文字列として格納するクラスですが、ユーザーの終わりから単純な型キャストが可能です。私が計画していたのは、配列の添え字演算子を使ってテンプレートを通して指定した型を返すことです。実際に動作するよりもはるかに良いとは言えますが、ここでは、私がやっていることの簡単な例を挙げて、はどのようにしてが働くべきかを知ることができます。
class StringList
{
public:
template <typename T>
T operator[](const int i)
}
そこから、いくつかの特定のテンプレートを定義し、必要に応じてすべてのユーザーが非常に簡単に定義できます。しかし、これの最大の問題は、テンプレートを使って添字演算子を呼び出す方法がわかりません。最初は、テンプレートメソッドを呼び出す標準的な方法と似ていると考えて、私は以下のことを仮定しました(明らかに正しくありません)。
StringList list;
T var = list<T>[0];
サブスクリプト演算子をテンプレートとして呼び出す適切な方法を知っている人はいますか?または、これを避け、名前付きメソッドを使用する必要がありますか?
オーバーロードされた演算子は構文的に意味があるときに最もよく使用されるので、この目的のために 'operator []'のオーバーロードには注意が必要です。あなたは通常 'リスト [0]'のようなものを書きません。余分な知的オーバーヘッドは価値がないと思います。テンプレート 'get'メソッドを作成し、' list.get (0) 'を呼び出すのはなぜでしょうか? –
templatetypedef
@templatetypedef私は完全に同意します。私はgetのような名前付き関数に固執しようとしていましたが、このようなテンプレートをどのように書くのか分からないと考えていました。しかし、私はそれを使用する必要があるかどうかに関わらず、どのように書かれているかを知りたいと思っています。 – TheCodeBroski