[英]C++ array class with function operator for assignment
您需要使用此原型構建一個函數:
T& operator()(std::size_t, std::size_t);
其中T
是您的元素類型。 此函數需要返回對數組中元素的引用 。 這允許您通過調用者中的引用來修改元素的值。
和上面一樣,您應該提供功能
const T& operator()(std::size_t, std::size_t) const;
用於只讀元素訪問。 我相當教條地堅持使用std::size_t
進行索引。 實際上,您可能希望自己的typedef
代表索引類型。
您需要提供兩個重載-一個const
,另一個不重載,返回一個引用。 例如:
template <typename TVal> class val {
std::map<int, TVal> values;
public:
// the distinction is between a const version ...
TVal operator()(int key) const {
auto found = values.find(key);
if (found != values.end())
return found->second;
return TVal();
}
// ... and a non-const, returning a reference
TVal& operator()(int key) {
return values[key];
}
};
然后可以按以下方式使用它:
val<int> v;
v(1) = 41;
v(1)++;
std::cout << v(1) << std::endl; // -> 42
std::cout << v(2) << std::endl; // -> 0
請發布編譯錯誤,以供其他人查看並准確解決。
話雖如此,我很確定這是因為您沒有從操作員那里返回參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.