[C++]オペレータをオーバーロードする

先日の話ですが、「戦国無双Wave」がAmazonで予約可能になりました。
やっとですか。しかも、内容的にはどうなんでしょう。微妙な気が・・・。

で、オーペレータ。簡単な話ですが、(友人に)聞かれたので答えておきます。(ここのアドレス教えてないけど。)


template< typename T >
class Hoge {
private:
    std::vector< std::vector< T > > internal;

public:
    std::vector< T > operator[](size_t index) {
        return this->internal[index];
    }
};

悲しいですね。上記の場合、returnで帰ってくるのはinternal[index]をコピーした新しいインスタンス(std::vector< T >型の)なので、思ったとおりの動作はしません。参照を返しましょう。


    std::vector< T >& operator[](size_t index) {
        return this->internal[index];
    }

・・・なんか、すごいくだらないな。。基本過ぎる。
仕方がないので、上記のようなものとして↓をあげときます。


template< typename T >
class Hoge : public std::vector< std::vector< T > > {};

これで十分動く。

以上

コスミー について

昔(?)はゲーム作ってました。 今もなんか作ろうとしています。
カテゴリー: C++ パーマリンク

コメントを残す

メールアドレスが公開されることはありません。