2017-07-06 7 views
-2

クラスを使用してプリミティブ型配列にアクセスしたいと思います。 私は2013クラスでアクセスするC++プリミティブ配列

class CInt 
{ 
public: 
    CInt() { val_ = 0; } 
    CInt(int x) { val_ = x; } 

private: 
    int val_; 
}; 

int arr[2]; 
CInt index; 

arr[index] = 2; // ERROR! 

私はsize_t型()演算子をオーバーロードしようとしましたが、まだ動作しませんVisual C++を使用しています。 C++/C++ 11では可能ですか?

+3

クラスオブジェクトをインデックスとして使用しますか?どうして? –

+4

'CInt'クラスの目的は何ですか?解決すべき問題は何ですか? –

+0

あなたの問題については、* int *または 'size_t'演算子をどのように実装しましたか?あなたに私たちを見せるために、[最小、完全で、かつ証明可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。あなたの質問にMCVEを追加するときにも、あなたが得る可能性のあるエラーを含めてください。 –

答えて

1

あなたのクラスが原因ではなく、あなたが配列の割り当てを行っている場所でエラーが発生していると思われます。あなたは、関数内で配列の割り当てを行う必要があります(これはあなたが正しく変換演算子をオーバーロードされたと仮定すると、動作するはずです)

arr[index] = 2; // ERROR! <-- you can't do this outside a function 

int main() { 
    arr[index] = 2; // <-- must be within a function 
1

あなたはsize_t型()演算子のオーバーロードをどのように行うのですか?以下は私にとって役に立ちます:

#include <iostream> 

class CInt 
{ 
public: 
    CInt() { val_ = 0; } 
    CInt(int x) { val_ = x; } 

    operator size_t() const { return val_; } 

private: 
    int val_; 
}; 

int main() { 
    int arr[2]; 
    CInt index; 

    arr[index] = 2; 

    // output: 2 
    std::cout << arr[index] << std::endl; 
} 
+0

私の間違い!また、不完全な質問/エラー報告には申し訳ありません。 – codder

関連する問題