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);
假设 T
是 Matrix2d
的模板参数并且参数都是 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
我正在制作一个矩阵 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);
假设 T
是 Matrix2d
的模板参数并且参数都是 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