Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • 締切済み

ポインタ代入のoperator演算子のオーバロードの仕方

下記、unsigned char*型を自前のクラスで作成した場合 どの様なoperator演算子が必要になりますでしょうか。 目的は、下記compにアクセスした回数をカウントさせたい為です。オーバロード関数の内部にカウンタを持たせたい。 unsigned char* と互換性を持たせるため、クラスはポインタとして定義して使用したいと思っています。 unsigned char comp[1000] ; int main( int, char** ){ unsigned char *v_ptr ; v_ptr = &comp[0] ; <- ここ *v_ptr = (unsigned char)100 ; <- ここ *v_ptr++ = *sw_ptr++ ; <- ここ return 0; } 下記のように使いたい unsigned char comp[1000] ; int main( int, char** ){ count * v_ptr ; v_ptr = &comp[0] ; <- ここ *v_ptr = (unsigned char)100 ; <- ここ *v_ptr++ = *sw_ptr++ ; <- ここ return 0; } class count{ public: unsigned char* operator*() { return ptr ; }  v_ptr& operator=()?? private: unsigned char* ptr ; } ; 色々調べてみましたが、自前クラスが右辺にある時のポインタ、アドレスオーバロードはありましたが、左辺のポインタ代入、値代入を見つける事が出来ませんでした。

みんなの回答

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

>色々調べてみましたが、自前クラスが右辺にある時のポインタ、アドレスオーバロードはありましたが、左辺のポインタ代入、値代入を見つける事が出来ませんでした。 はい、できないんです。 ATLみたいにクラスで実装するしかないですね。 class unsigned_char_ptr {   unsigned char *p; public:   unsigned_char_ptr(){p=NULL}; unsigned_char_ptr(unsigned char *p_){p=p_;} : : }; といった感じです。

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

組み込み型に対する演算子のオーバーロードはできません. だから, 少なくとも v_ptr はクラスにしておかないとどれも不可能です.

すると、全ての回答が全文表示されます。

関連するQ&A