其中,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 ++
答案 0 :(得分:10)
您可以使用:
this->operator[](0) = ...
或:
(*this)[0] = ...
但语法有点尴尬。我通常会创建另一个名为get
的方法并使用它,例如:
ClassB& get(size_t index) {
return this->operator[](0); // or something more direct
}
然后当你想使用它时,你可以说:
this->get(0) = ...
答案 1 :(得分:8)
尝试以下
(*this)[0] = ...
答案 2 :(得分:0)
ClassA::ClassA()
{
this->operator[]( someindex ) = whatever;
}
但请确保操作员可能依赖的任何成员数据在您使用之前完全构建。
答案 3 :(得分:0)
这是另一种方式,不确定它是否有用......
ClassA::ClassA()
{
ClassA &_this = *this;
_this[0] = someValue;
_this[1] = someValue;
_this[2] = someValue;
_this[3] = someValue;
_this[4] = someValue;
}
答案 4 :(得分:0)
两种不同的方式:
( *this ) [ index ] or this -> operator [ ] ( index )