C++ 为赋值重载 operator()

C++ overloading operator() for assignation

我正在制作一个矩阵 class 并且我想覆盖 operator() 以便我可以将数字分配给矩阵中的特定位置,如下所示:

int a[6] = { 1, 2, 3, 4, 5, 6 };
Matrix2d<int> blah(2, 2, a);
blah(2, 2) = 7;

现在不工作的是第 3 行,我怎样才能正确重载 () 运算符以使其工作? (如果有办法的话)矩阵包含一维数组,因此必须在正确的位置设置值。

只是 return 对元素的引用:

T& operator() (std::size_t x, std::size_t y);

假设 TMatrix2d 的模板参数并且参数都是 std::size_t.

类型

您可以使用引用来实现

class myClass {
    int m_v1, m_v2, m_v3;
public:
    int &/*that's the important character*/ returnRef(int number) {
        switch (number) {
            case 1: return m_v1;
            case 2: return m_v2;
            case 3: return m_v3;
        }
    }
    void print() const { std::cout << m_v1 << " " << m_v2 << " " << m_v3; }
}

然后:

myClass a;
a.returnRef(1) = 3;
a.returnRef(2) = 2;
a.returnRef(3) = 1;
a.print(); //print "3 2 1"

请注意,具有更多限制的引用 "look like" 指针不会 return 引用 local/deleted 变量。

有关 return 参考的更多信息:http://www.tutorialspoint.com/cplusplus/returning_values_by_reference.htm