如何从 C++ 下标运算符所在的类中访问它?
Posted
技术标签:
【中文标题】如何从 C++ 下标运算符所在的类中访问它?【英文标题】:How do I access a C++ subscript operator from within the class in which it resides? 【发布时间】:2009-04-06 19:23:02 【问题描述】:其中,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++
【问题讨论】:
这个问题几乎是重复的:***.com/questions/702003/thisi/702015 【参考方案1】:你可以使用:
this->operator[](0) = ...
或:
(*this)[0] = ...
但是语法有点尴尬。我通常会制作另一种名为 get
的方法并使用它,例如:
ClassB& get(size_t index)
return this->operator[](0); // or something more direct
那么当你想使用它时,你可以说:
this->get(0) = ...
【讨论】:
【参考方案2】:试试下面的
(*this)[0] = ...
【讨论】:
【参考方案3】: ClassA::ClassA()
this->operator[]( someindex ) = whatever;
但请确保在使用之前完全构造了运算符可能依赖的任何成员数据。
【讨论】:
【参考方案4】:两种不同的方式:
( *this ) [ index ] or this -> operator [ ] ( index )
【讨论】:
【参考方案5】:这里还有一个方法,不知道有没有用...
ClassA::ClassA()
ClassA &_this = *this;
_this[0] = someValue;
_this[1] = someValue;
_this[2] = someValue;
_this[3] = someValue;
_this[4] = someValue;
【讨论】:
第三行应该是“ClassA& _this = *this;”所以你不会复制这个。以上是关于如何从 C++ 下标运算符所在的类中访问它?的主要内容,如果未能解决你的问题,请参考以下文章