Tom*_*Tom 2 c++ operator-overloading matrix
通过这个站点C++ FAQ我已经为我的Matrix类重载了一个operator().这是我的班级:
class Matrix
{
public:
inline float& operator() (unsigned row, unsigned col)
{
return m[row][col];
}
private:
float m[4][4];
};
Run Code Online (Sandbox Code Playgroud)
现在我可以在主函数中使用它,如下所示:
int main()
{
Matrix matrix;
std::cout << matrix(2,2);
}
Run Code Online (Sandbox Code Playgroud)
但现在我想用它像这样的指针:
int main()
{
Matrix matrix;
Matrix* pointer = &matrix;
std::cout << pointer(2,2);
}
Run Code Online (Sandbox Code Playgroud)
和compilator告诉指针不能用作函数.有什么解决方案吗?
你要么需要取消引用它:
(*pointer)(2,2)
Run Code Online (Sandbox Code Playgroud)
或者您需要通过其全名呼叫运营商:
pointer->operator()(2,2)
Run Code Online (Sandbox Code Playgroud)