【发布时间】:2013-08-14 20:28:53
【问题描述】:
我正在尝试将 C 库连接到我的 C++ 项目。该库有自己的向量类型,假设为VECTOR,并提供元素访问:
int vector_set_value(VECTOR* vec, int index, double new_value);
int vector_get_value(VECTOR* vec, int index, double* retrieved_value);
现在最好通过 operator[] 重载包装 get 和 set 操作
double& operator[](int index);
const double& operator[](int index) const;
但是我如何告诉 operator[] 在vec[index]=3 和double value=vec[3] 之间有不同的行为?前面的vector_set_value 应该被调用,而后面的vector_get_value 应该被调用。
【问题讨论】:
-
我知道Ruby中有
def []和def []=,C++中有没有类似的策略? -
使用
const double& operator[](int index) const? -
看看signatures for
std::vector'soperator[] -
看看这个query
标签: c++ operator-keyword lvalue rvalue