如何从它所在的类中访问C++下标运算符?

Nic*_*ton 4 c# c++ subscript-operator

其中,ClassA有一个运算符,返回ClassB:

class ClassA
{
public:
    ClassA();
    ClassB &operator[](int index);
}
Run Code Online (Sandbox Code Playgroud)

如果我想从ClassA的构造函数中访问所述运算符,如下所示:

ClassA::ClassA()
{
    // How do I access the [] operator?
}
Run Code Online (Sandbox Code Playgroud)

目前,作为一种解决方法,我只是使用[]运算符调用的名为GetAtIndex(int index)的方法,构造函数也是如此.

如果我可以像C#一样访问它,那将是很好的:

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

   void ClassA()
   {
       this[0] = new ClassB();
   }
}
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用g ++

Tod*_*lin 10

您可以使用:

this->operator[](0) = ...
Run Code Online (Sandbox Code Playgroud)

要么:

(*this)[0] = ...
Run Code Online (Sandbox Code Playgroud)

但语法有点尴尬.我通常会调用另一个方法get并使用它,例如:

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

然后,当你想使用它时,你可以说:

this->get(0) = ...
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 8

请尝试以下方法

(*this)[0] = ...
Run Code Online (Sandbox Code Playgroud)