1
從本質上講,我做了一個類,給它一個支架運營商,但由於它的更好,我把它作爲一個指針,而不是一個領域,我必須這樣使用它:有什麼方法可以爲類的指針定義括號運算符嗎?
auto* p = new wannabeArray();
(*p)[1] = 5;
有什麼辦法使p [1]正常工作?
從本質上講,我做了一個類,給它一個支架運營商,但由於它的更好,我把它作爲一個指針,而不是一個領域,我必須這樣使用它:有什麼方法可以爲類的指針定義括號運算符嗎?
auto* p = new wannabeArray();
(*p)[1] = 5;
有什麼辦法使p [1]正常工作?
p[1]
的含義已經由該語言定義。它不能改變爲一個指針。您只能爲用戶定義的類型定義。
你可能做一個類來保存指針,例如,
class wannabeHolder: boost::noncopyable
{
wannabeArray *p;
public:
wannabeHolder(wannabeArray *p): p(p) {}
wannabeArray *operator->() { return p; }
wannabeArray::value_type &operator[](size_t n) { return (*p)[n]; }
};
但是,你正在重塑這裏的一部分車輪,或至少是一些輻條。正如Alf所建議的那樣,組織代碼可能比更好的方式來做這樣的事情。
爲什麼「把它作爲指針而不是字段要好得多」? –