【发布时间】:2015-01-31 18:09:41
【问题描述】:
我有一个类,我想重载函数调用运算符。但是由于 C++ 标准禁止声明两个仅在返回类型上不同的类似方法,所以我得到编译错误 C2556。我想将这些函数用作 getter 和 setter 方法。我知道我可以通过创建get 和set 函数来实现这一点。所以问题是:有没有办法以某种方式实现这一目标?
class Foo
{
private:
std::vector<int> m_vec;
public:
Foo()
{
m_vec.push_back(1);
m_vec.push_back(2);
m_vec.push_back(3);
}
//Getter
int operator()(int i)
{
return m_vec.at(i);
}
//Setter (C2556)
int& operator()(int i)
{
return m_vec.at(i);
}
};
int main()
{
Foo foo;
foo(1) = 10; //use the setter
int i = foo(1); //use the getter
return 0;
}
【问题讨论】:
标签: c++ function operator-keyword