4

ここで、ClassA には、ClassB を返すような演算子があります。

class ClassA
{
public:
    ClassA();
    ClassB &operator[](int index);
}

ClassA のコンストラクター内から上記のオペレーターにアクセスする場合は、次のようになります。

ClassA::ClassA()
{
    // How do I access the [] operator?
}

現時点では、回避策として、[] 演算子とコンストラクターが呼び出す GetAtIndex(int index) というメソッドを使用しています。

C# と同じようにアクセスできればいいのですが:

// Note: This is C#
class ClassA
{
   ClassB this[int index]
   {
       get { /* ... */ }
       set { /* ... */ }
   }

   void ClassA()
   {
       this[0] = new ClassB();
   }
}

注:私はg ++を使用しています

4

5 に答える 5

10

以下を使用できます。

this->operator[](0) = ...

また:

(*this)[0] = ...

しかし、構文は少し厄介です。私は通常、別のメソッドを作成getしてそれを使用します。

ClassB& get(size_t index) {
    return this->operator[](0); // or something more direct
}

次に、それを使用したい場合は、次のように言うことができます。

this->get(0) = ...
于 2009-04-06T19:28:03.457 に答える
8

以下を試してください

(*this)[0] = ...
于 2009-04-06T19:26:17.767 に答える
0
 ClassA::ClassA()
 {
     this->operator[]( someindex ) = whatever;
 }

ただし、オペレーターが依存する可能性のあるメンバー データは、使用する前に完全に構​​築されていることを確認してください。

于 2009-04-06T19:25:58.220 に答える
0

2 つの異なる方法:

( *this ) [ index ] or this -> operator [ ] ( index )
于 2009-04-11T15:02:32.577 に答える
0

別の方法がありますが、それが役立つかどうかはわかりません...

ClassA::ClassA()
{
    ClassA &_this = *this;
    _this[0] = someValue;
    _this[1] = someValue;
    _this[2] = someValue;
    _this[3] = someValue;
    _this[4] = someValue;
}
于 2009-04-06T19:32:33.260 に答える