3

一次元スペクトルを表すクラスがあります。基礎となるデータ型は単純な浮動小数点数の配列です。スペクトルの要素を操作するために、次のように添字演算子をオーバーロードしました。

class OneDSpectrum
{
public:
    ...
    float& operator[](int index);
    const float& operator[](int index) const;
    ...
private:
    int numChannels;
    float* histogram;
    ...
}

残念ながら、このクラスのほとんどすべての用途はポインターとして使用されるため、やや煩わしい(*pointerToSpectrum)[ index ]表記法に対処する必要があります。

最初に 2 つのアイデアがありました。

私の最初のアイデアは、 の添え字演算子をオーバーロードすることでしたOneDSpectrum*が、それは潜在的な問題とトラブルでいっぱいのバスケットのように見えます。

私の 2 番目のアイデアは、OneDSpectrum 用のある種のカスタム スマート ポインターを作成することでした。

だから私の質問はこれです: 機能を得るために行うことは合理的ですか? それとも、多くのを使用して対処する必要がありますか?SmartPointerToSpectrum[ index ](*pointerToSpectrum)[ index ](*pointerToSpectrum)[ index ]

4

2 に答える 2